以下是一个示例方法,可用于验证中国公民身份证格式是否正确:
public static boolean validateIdCard(String idCard) {
// 校验身份证长度和格式
String regex = "[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\\d|3[0-1])\\d{3}[\\dX]";
if (!idCard.matches(regex)) {
return false;
}
// 校验身份证校验码,根据 GB 11643-1999 标准计算
int[] factors = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
char[] checkCodes = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' };
int sum = 0;
for (int i = 0; i < 17; i++) {
int digit = idCard.charAt(i) - '0';
sum += digit * factors[i];
}
char checkCode = checkCodes[sum % 11];
return checkCode == idCard.charAt(17);
}
该方法使用正则表达式校验身份证号码格式,并使用 GB 11643-1999 标准计算校验码进行校验。如果身份证格式正确且校验码正确,则返回 true;否则返回 false。