java使用正则表达式验证身份证号
时间: 2023-10-02 21:12:06 浏览: 167
可以使用以下代码来验证身份证号是否合法:
```java
public static boolean isValidIdCard(String idCard) {
// 身份证号正则表达式
String regx = "[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[012]))(([012]\\d)|3[01])\\d{3}[Xx\\d]";
Pattern pattern = Pattern.compile(regx);
Matcher matcher = pattern.matcher(idCard);
if (!matcher.matches()) {
// 身份证号不合法
return false;
}
// 验证身份证号最后一位校验码
int[] factor = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
char[] code = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
int sum = 0;
for (int i = 0; i < 17; i++) {
sum += (idCard.charAt(i) - '0') * factor[i];
}
if (idCard.charAt(17) == 'x' || idCard.charAt(17) == 'X') {
return code[sum % 11] == 'X';
} else {
return code[sum % 11] == idCard.charAt(17);
}
}
```
该代码使用正则表达式验证身份证号格式是否正确,然后再验证身份证号的最后一位校验码是否正确,如果都正确则返回 true,否则返回 false。
阅读全文