二代身份证的最后一位数字为校验位,用js实现了校验功能
function IDnum_check(ID) {
var reg = /^\d{18}$/;
var pass = true;
if(reg.test(ID) == false) {
pass= false;
return false;
}
else {
var code = ID.toString().split("");
//权重因子
var factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
//校验位
var parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
var sum = 0;
for(var i = 0; i < 17; i++)
{
sum += code[i] * factor[i];
}
if(code[17] != parity[sum%11]) {
pass = false;
return false;
}
else
return true;
}
}