JS实现身份证18位校验码验证逻辑

作者:半夏时间:2026-10-21 19:28:36浏览:94

本文介绍如何使用JavaScript编写函数验证二代身份证最后一位校验码。通过前17位数字与特定系数加权求和,再对11取余,根据余数映射规则判断第18位是否正确,包含完整代码示例。

身份证校验码计算原理

二代身份证号码由18位数字组成,其最后一位(即第18位)的生成遵循特定计算规则。

首先,将身份证号码的前17位数字分别乘以对应的加权系数。从第1位到第17位,这些系数依次为:

7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2。

接着,将上述17位数字与对应系数相乘的结果累加求和。

然后,用计算得到的总和除以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。即,如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。

以男性身份证号码34052419800101001X为例进行验证:计算前17位与系数乘积之和为189。将189除以11,商为17,余数为2。根据对应规则,余数2对应的校验码为X,因此该身份证号码最后一位X是正确的。

JavaScript验证代码实现

基于上述逻辑,编写JavaScript验证函数如下:


//验证方法
function verifyCode(id){
 if(id.length !=18 )
  return false;
 /*1、从第一位到第十七位的系数分别为:
   7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 
   将这17位数字和系数相乘的结果相加。 */ 
 var arr = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
 var sum = 0;
 for(var i=0; i<arr.length; i++){
  sum += parseInt(id.charAt(i)) * arr[i];
 }
 //2、用加出来和除以11,看余数,
 var c = sum%11;
 //3、分别对应的最后一位身份证的号码为:1-0-X-9-8-7-6-5-4-3-2
 var ch = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
 var code = ch[c];
 var last = id.charAt(17);
 last = last=='x' ? 'X': last;
 return last == code;
 }

测试该函数的代码如下:


var id = "34052419800101001X";
 console.log(verifyCode(id));

以上介绍了使用JS编写函数验证身份证最后一位校验码的方法,希望能对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢大家对本网站的支持!

作者最新文章