javascript验证香港身份证的格式或真实性
话不多说,请看代码
functionIsHKID(str){
varstrValidChars="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
//basicchecklength
if(str.length<8)
returnfalse;
//handlingbracket
if(str.charAt(str.length-3)=='('&&str.charAt(str.length-1)==')')
str=str.substring(0,str.length-3)+str.charAt(str.length-2);
//converttouppercase
str=str.toUpperCase();
//regularexpressiontocheckpatternandsplit
varhkidPat=/^([A-Z]{1,2})([0-9]{6})([A0-9])$/;
varmatchArray=str.match(hkidPat);
//notmatch,returnfalse
if(matchArray==null)
returnfalse;
//thecharacterpart,numericpartandcheckdigitpart
varcharPart=matchArray[1];
varnumPart=matchArray[2];
varcheckDigit=matchArray[3];
//calculatethechecksumforcharacterpart
varcheckSum=0;
if(charPart.length==2){
checkSum+=9*(10+strValidChars.indexOf(charPart.charAt(0)));
checkSum+=8*(10+strValidChars.indexOf(charPart.charAt(1)));
}else{
checkSum+=9*36;
checkSum+=8*(10+strValidChars.indexOf(charPart));
}
//calculatethechecksumfornumericpart
for(vari=0,j=7;i<numPart.length;i++,j--)
checkSum+=j*numPart.charAt(i);
//verifythecheckdigit
varremaining=checkSum%11;
varverify=remaining==0?0:11-remaining;
returnverify==checkDigit||(verify==10&&checkDigit=='A');
}
在网上找了很久都没合意的验证方式,最后通过Google找到一个国外写的js验证,发现可以使用。
上面那段验证的很精密,包含身份证真实性的校验,如果只是想验证输入的香港身份证格式,请使用下面的这段js。
functionIsHKID(str){
varstrValidChars="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
//basicchecklength
if(str.length<8)
returnfalse;
//handlingbracket
if(str.charAt(str.length-3)=='('&&str.charAt(str.length-1)==')')
str=str.substring(0,str.length-3)+str.charAt(str.length-2);
//converttouppercase
str=str.toUpperCase();
//regularexpressiontocheckpatternandsplit
varhkidPat=/^([A-Z]{1,2})([0-9]{6})([A0-9])$/;
varmatchArray=str.match(hkidPat);
//notmatch,returnfalse
if(matchArray==null)
returnfalse;
returntrue;
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!
