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