java身份证18位号码判断
时间: 2024-09-20 10:04:48 浏览: 52
在Java中,判断18位中国大陆身份证号码的有效性通常需要进行一些规则验证,因为身份证号码有一定的校验规则,包括奇偶校验、出生日期验证以及地区码检查等。以下是一个简单的示例,用于基本的合法性检查:
```java
import java.util.regex.Pattern;
public class IDCardValidator {
private static final String ID_CARD_PATTERN = "^(\\d{15}|\\d{18})$"; // 匹配15位或18位数字
private static final Pattern pattern = Pattern.compile(ID_CARD_PATTERN);
public static boolean isValid(String id) {
if (pattern.matcher(id).matches()) {
int sum = 0;
int[] weights = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
for (int i = 0; i < id.length(); i++) {
char digit = Character.getNumericValue(id.charAt(i));
if (i % 2 == 1) { // 奇数位置翻倍权重
sum += digit * weights[i];
} else {
sum += digit * weights[i] / 2;
}
}
int checkSum = sum % 11;
return checkSum == 1 || (checkSum > 1 && id.endsWith("1" + (11 - checkSum)));
}
return false;
}
阅读全文