JS实现第二代身份证号码校验算法详解
作者:木棉时间:2026-10-26 08:23:01浏览:98
本文解析了基于JavaScript的第二代身份证号码本地校验机制。通过提取前17位数字与特定权重数组相乘求和,再对11取模,将结果映射为对应的校验位(含X)。该算法无需联网即可验证身份证号的合法性,代码源自盛大,供开发者参考实现前端快速校验功能。
身份证本地校验机制解析
鉴于响应速度极快,可以确定该过程并非依赖网络联机校验,这意味着第二代身份证除了包含表示出生日期和性别的常规字段外,还内置了自我校验规则。通过查看页面源码,发现这段JavaScript代码未被压缩,因此其逻辑清晰易懂。
在此向各位科普这一机制,尽管可能已是常识,但仍值得分享。
以下代码源自相关资源,版权归盛大所有。此外,维基百科也提供了更详细的介绍和算法说明。
JavaScript校验代码实现
具体实现代码如下:
iW = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
iSum = 0;
for( i=0;i<17;i++){
iC = v_card.charAt(i) ;
iVal = parseInt(iC);
iSum += iVal * iW[i];
}
iJYM = iSum % 11;
var sJYM = '';
if(iJYM == 0) sJYM = "1";
else if(iJYM == 1) sJYM = "0";
else if(iJYM == 2) sJYM = "x";
else if(iJYM == 3) sJYM = "9";
else if(iJYM == 4) sJYM = "8";
else if(iJYM == 5) sJYM = "7";
else if(iJYM == 6) sJYM = "6";
else if(iJYM == 7) sJYM = "5";
else if(iJYM == 8) sJYM = "4";
else if(iJYM == 9) sJYM = "3";
else if(iJYM == 10) sJYM = "2";
var cCheck = v_card.charAt(17).toLowerCase();
if( cCheck != sJYM ){
return false; //对不上就是假号码
} 作者最新文章
JavaScript怎么准确判断数据类型:typeof、instanceof与Object.prototype.toString
2026-11-05 17:09:21
JS中将数组和对象混合组装为JSON字符串
2026-11-05 16:41:42
JS运算符优先级与结合性的区别是什么?
2026-11-05 13:22:02
JS Map怎么只遍历Key或Value
2026-11-05 13:00:36
D3.js 与 ECharts 选型对比:灵活性 vs 开发效率
2026-11-05 09:45:01
