用java写一个校验15位身份证号
时间: 2023-04-12 19:00:57 浏览: 95
以下是用 Java 写一个校验 15 位身份证号的代码:
```java
public static boolean validateIDCard15(String idCard) {
if (idCard == null || idCard.length() != 15) {
return false;
}
if (!idCard.matches("\\d{15}")) {
return false;
}
String provinceCode = idCard.substring(0, 2);
if (!isValidProvinceCode(provinceCode)) {
return false;
}
String birthday = "19" + idCard.substring(6, 12);
if (!isValidDate(birthday)) {
return false;
}
return true;
}
private static boolean isValidProvinceCode(String provinceCode) {
String[] validProvinceCodes = {"11", "12", "13", "14", "15", "21", "22", "23", "31", "32", "33", "34", "35", "36", "37", "41", "42", "43", "44", "45", "46", "50", "51", "52", "53", "54", "61", "62", "63", "64", "65", "71", "81", "82"};
for (String code : validProvinceCodes) {
if (code.equals(provinceCode)) {
return true;
}
}
return false;
}
private static boolean isValidDate(String date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
sdf.setLenient(false);
try {
sdf.parse(date);
return true;
} catch (ParseException e) {
return false;
}
}
```
这个方法接收一个 15 位身份证号作为参数,返回一个 boolean 值,表示该身份证号是否合法。如果身份证号不合法,返回 false;否则返回 true。
该方法首先检查身份证号的长度和格式是否正确,如果不正确,直接返回 false。然后检查身份证号的前两位是否是有效的省份代码,如果不是,返回 false。接着检查身份证号中的出生日期是否合法,如果不合法,返回 false。最后,如果所有的检查都通过了,返回 true。
注意:这个方法只能校验 15 位身份证号,不能校验 18 位身份证号。如果需要校验 18 位身份证号,需要另外编写代码。
阅读全文