`
suifeng
  • 浏览: 182499 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

身份证最后一位的校验值---JavaScript

阅读更多

   

<script>
  var a = [3, 4, 0, 5, 2, 4, 1, 9, 8, 0, 0, 1, 0, 1, 0, 0, 1]; //身份证号码
  var w = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; //每位的系数
  
  var sum = 0;  //和
  
  var model = 0; // 模
  
  var result;  //结果

  var map = [1]; //映射
  
  //对应替换
  map[0] = 1;
  map[1] = 0;
  map[2] = 'X';
  map[3] = 9;
  map[4] = 8;
  map[5] = 7;
  map[6] = 6;
  map[7] = 5;
  map[8] = 4;
  map[9] = 3;
  map[10] = 2;

  //求和
  for (var i=0; i<a.length; i++) {
    sum += w[i] * a[i];
  }
  
  //取模
  model = sum % 11;
  
  //对应替换
  result = map[model];
  
  //输出
  document.write('总和 : (sum = SUM(a[i] + w[i]) = ' + sum + '<br/>');
  document.write('模 : sum % 11 = ' + model + '<br/>');
  document.write('最后结果 :  ' + result  + '<br/>');

</script>

 

 

附:(来自百度 http://zhidao.baidu.com/question/13906611.html)

大陆的身份证为18位,老的身份证是15位。 
关于身份证第18是怎么计算的,原理如下:根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 
地址码(身份证前六位)表示编码对象常住户口所在县(市、旗、区)的行政区划代码。(所有区域的编码可以到这个网站http://www.stats.gov.cn/tjbz/index.htm 
查询到最新的县及县以上的行政编码资料。) 
生日期码(身份证第七位到第十四位)表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。例如:1981年05月11日就用19810511表示。 
顺序码(身份证第十五位到十七位)为同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。其中第十七位奇数分给男性,偶数分给女性。 
校验码(身份证最后一位)是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。 

第十八位数字的计算方法为: 
1.将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 
2.将这17位数字和系数相乘的结果相加。 
3.用加出来和除以11,看余数是多少? 
4余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2。 
5.通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。 

例如:某男性的身份证号码是34052419800101001X。我们要看看这个身份证是不是合法的身份证。 
首先:我们得出,前17位的乘积和是189 
然后:用189除以11得出的结果是17 + 2/11,也就是说余数是2。 
最后:通过对应规则就可以知道余数2对应的数字是x。所以,这是一个合格的身份证号码。 

备注说明:关于大陆身份证有的人会发现前几位为什么变化了。这主要出现在中国的重庆。原有的重庆人的身份证多数以51开头。以前隶属于四川的原因。但新办的身份证可能是50开头,原因是行政区划改变所致。中国各地的行政区划代码请参考国家统计局网

分享到:
评论

相关推荐

    jquery.validate 扩展身份证校验方法

    - 对于18位身份证号码还需要额外验证最后一位校验码是否正确。 5. **正则表达式的使用**: 使用正则表达式`ereg`来匹配身份证号码的格式,确保日期部分的合法性。 6. **18位身份证号码的校验码验证**: 如果是...

    身份证校验javascript验证方法

    在JavaScript中实现身份证校验可以帮助开发者在前端就过滤掉无效的身份证号码,提高用户体验并减轻服务器端的压力。以下是对标题和描述中涉及的知识点的详细解释: 1. **身份证号码结构**:中国的身份证号码分为15...

    身份证批量校验的工具(只有一个HTML文件)

    工具根据身份证号码前17位数字,运用加权计算方法,得出最后一位的理论值,并与实际输入的校验码进行对比。如果两者一致,则说明身份证号码在结构上是正确的。这一功能是确保身份证号码真实性的重要环节。 此外,该...

    身份证验证javascript脚本

    通过以上分析,我们可以看出这段JavaScript脚本主要实现了对身份证号码的基本验证,包括地区编码、生日日期以及18位身份证的校验码验证。开发者可以根据具体需求调整和扩展该脚本的功能,以满足更复杂的验证场景。...

    身份证号验证程序javascript

    2. **格式检查**:验证身份证号码是否符合规定的格式(前17位数字+最后一位校验码)。 3. **地区代码检查**:验证身份证号码的前两位是否为合法的地区代码。 4. **出生日期检查**:验证身份证号码中的出生日期是否...

    JAVASCRIPT身份证验证码

    1. **格式检查**:首先使用正则表达式`/^\d{17}(\d|x)$/i`来验证身份证号码是否符合基本格式要求,即17位数字加上最后一位校验码(可以是数字或大写X)。如果不符合,则直接返回`false`。 2. **地区编码检查**:...

    js验证身份证格式

    18位身份证号码由6位地址码、8位出生日期码、3位顺序码(奇数分配给男性,偶数分配给女性)和1位校验码组成。 1. **地址码**:代表持证人的户籍所在地,前2位是省级行政区划代码,接着3位是市级行政区划代码,最后3...

    javascript验证香港身份证的格式或真实性

    3. 校验码:身份证的最后一位是校验码,用于校验身份证的真伪。校验码的计算方式较为复杂,需要结合前面的字母和数字部分。具体计算方法如下: - 如果字母部分为两位,那么每一位将被赋予一个固定权重(分别为9和8...

    JS编写函数实现对身份证号码最后一位的验证功能

    4. 最后一位是校验码,其值可以是0-9的数字,或者是罗马数字“X”。 校验码的计算方法如下: 1. 将前17位数字各自乘以不同的加权系数。这些加权系数依次是:7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2。...

    javascript身份证验证代码.docx

    校验码的计算方法相对复杂,它涉及到前17位数字按照特定系数加权求和后,除以11得到的余数,再根据余数对应校验码表来确定最后一位的正确值。 在提供的JavaScript代码片段中,首先进行的工作是拆分身份证号码。这里...

    验证身份证是否合法

    5. **校验码计算与验证**:计算身份证最后一位校验码的正确性。 #### 身份证基本格式校验 在验证身份证之前,首先需要确保输入的字符串满足身份证的基本格式要求。身份证号码通常有两种格式: - **第一代身份证**...

    js身份证号验证

    中国的身份证号码最后一位是校验码,可能的值是0-9和X(代表10)。 5. 比较计算出的校验码与身份证号码实际的最后一位,如果不匹配,则表示身份证号码无效,返回错误信息;否则,格式化身份证号码并返回`true`。 ...

    JavaScript截取手机号码 手机验证 身份证验证等等

    这个函数首先检查输入的身份证号码是否为15位或18位,并且最后一位可以是数字或X(大小写不敏感)。更严谨的验证还需要计算校验码,这通常涉及前17位数字的加权和模运算,以及根据结果确定的校验码。 在实际应用中...

    javascript常用校验脚本

    对于中国大陆的身份证,通常使用15位或18位数字,其中18位包含校验位。身份证验证较为复杂,需要考虑生日、性别、地区代码等信息。一个简单的18位身份证验证函数可能如下: ```javascript function f_check_...

    JS验证身份证号与验证材料

    - 最后,用总和对11取模,得到的余数与最后一位校验码比较,若相等则验证通过。 4. **身份证号码的加权因子**: - 加权因子是1到17位数字的倍数,依次为:7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2。...

    省市地区及6位编码(附身份证号校验程序)

    前6位表示出生年月日(yyMMdd),第7位到第14位为行政区划代码,第15位和第16位代表顺序码,第17位表示性别(奇数为男,偶数为女),最后一位是校验码。校验码可以通过特定的公式计算得出,以确保身份证号码的合法性...

    js 验证身份证信息有效性.docx

    4. **校验码计算**:使用加权因子(Wi数组)和身份证号码的前17位进行计算,得到一个和,然后用这个和除以11取余数,得到的结果对应于ValideCode数组的位置,如果这个位置的值与身份证号码的最后一位一致,则校验码...

    JavaScript实现身份证验证代码实例|angluo-javascript-270039.pdf

    身份证号码校验码计算:对于18位身份证号码,示例代码通过ISO 7064:1983 MOD 11-2规则计算校验码,该规则是一套国际通用的校验码计算方式,通过加权求和的方式得到一个校验值,然后通过校验值来确定最后一位校验码是...

Global site tag (gtag.js) - Google Analytics