概述
Java版
/**
* 验证中国香港身份证号码
* <p>
* 身份证前2位为英文字符位,如果只出现一个英文字符则表示第一位是空格,对应数字36 前2位英文字符A-Z分别对应数字10-35
* 最后一位校验码为0-9的数字加上字符"A","A"代表10
* </p>
* <p>
* 将身份证号码全部转换为数字,分别对应乘9-1相加的总和,整除11则证件号码有效
* </p>
*
* @param idCard 身份证号码
* @return 验证码是否符合
*/
public static boolean validateHKCard(String idCard) {
String verifyCode[] = {"0","1","2","3","4","5","6","7","8","9"};//第九位校验码(除A以外,A单独处理)
//
String card = idCard.replaceAll("[\(|\)]", "");//如果输入带括号则取消注释,注释掉下一行
String card = idCard;
int sum = 0;
char[] chars1 = card.substring(0, 1).toUpperCase().toCharArray();
if (card.length() == 9) {
sum = ((int) chars1[0] - 55) * 9
+ ((int) card.substring(1, 2).toUpperCase().toCharArray()[0] - 55) * 8;
card = card.substring(1, 9);
} else {
sum = 324 + ((int) chars1[0] - 55) * 8;
}
String mid = card.substring(1, 7);
String end = card.substring(7, 8);
char[] chars = mid.toCharArray();
int iflag = 7;
for (char c : chars) {
sum = sum + Integer.parseInt(c + "") * iflag;
iflag--;
}
if (end.toUpperCase().equals("A")) {
sum = sum + 10;
} else if(Arrays.asList(verifyCode).contains(end)){
sum = sum + Integer.parseInt(end);
}else {
return false;
}
return sum % 11 == 0;
}
JavaScript版
function validateHKCard(id){
var sum = 0;
const verifyCode =[0,1,2,3,4,5,6,7,8,9]
if(id.length == 9){
sum = (id.substr(0,1).toUpperCase().charCodeAt()-55)*9 + (id.substr(1,1).toUpperCase().charCodeAt()-55)*8;
id = id.substr(1,8);
}else if(id.length == 8){
sum = 324 + (id.substr(0,1).toUpperCase().charCodeAt()-55)*8;
}else{
return false;
}
var end = id.substr(7,1);
var iflag = 7;
var i;
for(i = 1;i<=6;i++,iflag--){
sum = sum + parseInt(id.substr(i,1))*iflag;
}
if(end.toUpperCase() == ("A")){
sum = sum + 10;
}else if(verifyCode.includes(parseInt(end))){
sum = sum + parseInt(end);
}else{
return false;
}
return sum % 11 == 0;
}
最后
以上就是唠叨野狼为你收集整理的java以及JavaScript的香港身份证验证方法。Java版JavaScript版的全部内容,希望文章能够帮你解决java以及JavaScript的香港身份证验证方法。Java版JavaScript版所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复