身份证校验规则

更新时间:2024-11-06 11:10:03 阅读: 评论:0


2023年5月28日发(作者:心理变态测试)

⾝份证校验规则

/*

* ⾝份证15位编码规则:dddddd yymmdd xx p

* dddddd6位地区编码

* yymmdd: 出⽣年(两位年)⽉⽇,如:910215

* xx: 顺序编码,系统产⽣,⽆法确定

* p: 性别,奇数为男,偶数为⼥

*

* ⾝份证18位编码规则:dddddd yyyymmdd xxx y

* dddddd6位地区编码

* yyyymmdd: 出⽣年(四位年)⽉⽇,如:19910215

* xxx:顺序编码,系统产⽣,⽆法确定,奇数为男,偶数为⼥

* y: 校验码,该位数值可通过前17位计算获得

*

* 17位号码加权因⼦为 Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ]

* 验证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]

* 如果验证码恰好是10,为了保证⾝份证是⼗⼋位,那么第⼗⼋位将⽤X来代替

* 校验位计算公式:Y_P = mod( ∑(Ai×Wi),11 )

* i为⾝份证号码1...17 ; Y_P为校验码Y所在校验码数组位置

*/

function validateIdCard(idCard){

//15位和18位⾝份证号码的正则表达式

var regIdCard=/^(^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$)|(^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])((d{4})|d{3}[Xx])$)$/;

//如果通过该验证,说明⾝份证格式正确,但准确性还需计算

if((idCard)){

if(==18){

var idCardWi=new Array( 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ); //将前17位加权因⼦保存在数组⾥

var idCardY=new Array( 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ); //这是除以11后,可能产⽣的11位余数、验证码,也保存成数组

var idCardWiSum=0; //⽤来保存前17位各⾃乖以加权因⼦后的总和

for(var i=0;i<17;i++){

idCardWiSum+=ing(i,i+1)*idCardWi[i];

}

}

var idCardMod=idCardWiSum%11;//计算出校验码所在数组的位置

var idCardLast=ing(17);//得到最后⼀位⾝份证号码

//如果等于2,则说明校验码是10,⾝份证号码最后⼀位应该是X

if(idCardMod==2){

if(idCardLast=="X"||idCardLast=="x"){

alert("恭喜通过验证啦!");

}else{

alert("⾝份证号码错误!");

}

}else{

//⽤计算出的验证码与最后⼀位⾝份证号码匹配,如果⼀致,说明通过,否则是⽆效的⾝份证号码

if(idCardLast==idCardY[idCardMod]){

alert("恭喜通过验证啦!");

}else{

alert("⾝份证号码错误!");

}

}

}

}else{

alert("⾝份证格式不正确!");

}

}


本文发布于:2023-05-28 02:48:43,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/falv/fa/86/124086.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:验证身份证
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 站长QQ:55-9-10-26