您的位置:首页 > Web前端 > JavaScript

JS校验身份证号码是否存在及正确性,不仅仅是校验格式是否正确

2017-08-10 00:00 369 查看
function regCardNo() {
var regBox = {
regWord : /^([\u4e00-\u9fa5]{1,6})$/,//六个汉字以内
regIdCard : /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/
//如果通过该验证,说明身份证格式正确,但准确性还需计算

};
if(regBox.regIdCard.test($("input[name='idNumber']").val())){
if($("input[name='idNumber']").val().length==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+=$("input[name='idNumber']").val().substring(i,i+1)*idCardWi[i];
}
var idCardMod=idCardWiSum%11;//计算出校验码所在数组的位置
var idCardLast=$("input[name='idNumber']").val().substring(17);//得到最后一位身份证号码
//如果等于2,则说明校验码是10,身份证号码最后一位应该是X
if(idCardMod==2){
if(idCardLast!="X" && idCardLast!="x"){
alert("身份证号码错误!");
return false;
}
}else{
//用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
if(idCardLast!=idCardY[idCardMod]){
alert("身份证号码错误!");
return false;
}
}
}
}else if(!regBox.regIdCard.test($("input[name='idNumber']").val())){
alert("身份证格式不正确!");
return false;
}else{
return true;
}
$("#submit").attr('disabled','disabled').css('background-color','#bbb')

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Javascript