欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

javascript验证香港身份证的格式或真实性

程序员文章站 2022-05-25 09:42:04
话不多说,请看代码 function ishkid(str) { var strvalidchars = "abcdefghijklmnopqrstuvwxy...

话不多说,请看代码

function ishkid(str) {
 var strvalidchars = "abcdefghijklmnopqrstuvwxyz"
 // basic check length
 if (str.length < 8)
 return false;
 // handling bracket
 if (str.charat(str.length-3) == '(' && str.charat(str.length-1) == ')')
 str = str.substring(0, str.length - 3) + str.charat(str.length -2);
 // convert to upper case
 str = str.touppercase();
 // regular expression to check pattern and split
 var hkidpat = /^([a-z]{1,2})([0-9]{6})([a0-9])$/;
 var matcharray = str.match(hkidpat);
 // not match, return false
 if (matcharray == null)
 return false;
 // the character part, numeric part and check digit part
 var charpart = matcharray[1];
 var numpart = matcharray[2];
 var checkdigit = matcharray[3];
 // calculate the checksum for character part
 var checksum = 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));
 }
 // calculate the checksum for numeric part
 for (var i = 0, j = 7; i < numpart.length; i++, j--)
 checksum += j * numpart.charat(i);
 // verify the check digit
 var remaining = checksum % 11;
 var verify = remaining == 0 ? 0 : 11 - remaining;
 return verify == checkdigit || (verify == 10 && checkdigit == 'a');
}

在网上找了很久都没合意的验证方式,最后通过google找到一个国外写的js验证,发现可以使用。

上面那段验证的很精密,包含身份证真实性的校验,如果只是想验证输入的香港身份证格式,请使用下面的这段js。

function ishkid(str) {
 var strvalidchars = "abcdefghijklmnopqrstuvwxyz"
 // basic check length
 if (str.length < 8)
 return false;
 // handling bracket
 if (str.charat(str.length-3) == '(' && str.charat(str.length-1) == ')')
 str = str.substring(0, str.length - 3) + str.charat(str.length -2);
 // convert to upper case
 str = str.touppercase();
 // regular expression to check pattern and split
 var hkidpat = /^([a-z]{1,2})([0-9]{6})([a0-9])$/;
 var matcharray = str.match(hkidpat);
 // not match, return false
 if (matcharray == null)
 return false;
 return true;
 }

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!