Java身份证号码验证:正则表达式与校验码计算
可以使用如下代码来验证身份证号码是否合法:
public static boolean isIDCard(String idCard) {
' 身份证号码正则表达式
String idCardRegex = "^\d{17}[\d|x|X]$";
' 判断身份证号码是否符合正则表达式
if (!idCard.matches(idCardRegex)) {
return false;
}
' 计算校验码
char[] idCardArray = idCard.toCharArray();
int[] weightArray = new int[]{7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
char[] checkCodeArray = new char[]{'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
int sum = 0;
for (int i = 0; i < idCardArray.length - 1; i++) {
int num = Character.getNumericValue(idCardArray[i]);
sum += num * weightArray[i];
}
int mod = sum % 11;
char checkCode = checkCodeArray[mod];
' 判断校验码是否正确
if (idCardArray[17] != checkCode) {
return false;
}
return true;
}
该方法中,首先使用正则表达式判断身份证号码是否符合规范,然后计算身份证号码的校验码,最后判断校验码是否正确。
原文地址: https://www.cveoy.top/t/topic/nSB3 著作权归作者所有。请勿转载和采集!