java验证身份证号是否合法
时间: 2023-03-31 09:02:51 浏览: 91
可以使用正则表达式来验证身份证号是否合法,以下是示例代码:
```java
public static boolean isIDCard(String idCard) {
String regex = "^\\d{17}[\\d|x|X]$";
if (!idCard.matches(regex)) {
return false;
}
int[] weights = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
int sum = ;
for (int i = ; i < 17; i++) {
sum += (idCard.charAt(i) - '') * weights[i];
}
int mod = sum % 11;
char[] checkCodes = {'1', '', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
return idCard.charAt(17) == checkCodes[mod];
}
```
这个方法会返回一个布尔值,表示身份证号是否合法。
相关问题
java验证身份证号码合法性
以下是Java中验证身份证号码合法性的方法:
```java
public static boolean isValidIdCard(String idCard) {
if (idCard == null || idCard.length() != 18) {
return false;
}
char[] chars = idCard.toCharArray();
int[] ints = new int[chars.length];
for (int i = 0; i < chars.length; i++) {
ints[i] = Integer.parseInt(chars[i] + "");
}
int sum = 0;
for (int i = 0; i < ints.length - 1; i++) {
sum += ints[i] * WEIGHTS[i];
}
int mod = sum % 11;
int checkCode = CHECK_CODES[mod];
return checkCode == ints[ints.length - 1];
}
private static final int[] WEIGHTS = new int[]{7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
private static final int[] CHECK_CODES = new int[]{1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2};
```
其中,`isValidIdCard`方法接收一个身份证号码字符串作为参数,返回一个布尔值,表示该身份证号码是否合法。如果身份证号码合法,返回`true`,否则返回`false`。
java使用正则表达式验证身份证号
可以使用以下代码来验证身份证号是否合法:
```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。