正则表达式 校验身份证最全解析 (java 实现)
import java.util.regex.Pattern;
public class IDCardValidator {
// 身份证正则表达式(18位)
private static final String REG_ID_CARD_18 = "^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\\d{3}([0-9Xx])$";
// 身份证正则表达式(15位)
private static final String REG_ID_CARD_15 = "^[1-9]\\d{5}\\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\\d{3}$";
// 校验身份证是否合法
public static boolean isValid(String idCard) {
if (idCard == null || (idCard.length() != 18 && idCard.length() != 15)) {
return false;
}
final Pattern pattern18 = Pattern.compile(REG_ID_CARD_18);
final Pattern pattern15 = Pattern.compile(REG_ID_CARD_15);
return pattern18.matcher(idCard).matches() || pattern15.matcher(idCard).matches();
}
public static void main(String[] args) {
// 测试示例
String idCard1 = "123456789012345678";
String idCard2 = "123456789012345";
String idCard3 = "12345678901234567X";
String idCard4 = "1234567890123456";
System.out.println("ID Card 1 is valid: " + isValid(idCard1));
System.out.println("ID Card 2 is valid: " + isValid(idCard2));
System.out.println("ID Card 3 is valid: " + isValid(idCard3));
System.out.println("ID Card 4 is valid: " + isValid(idCard4));
}
}
这段代码定义了一个IDCardValidator
类,其中包含一个静态方法isValid
用于校验身份证号码是否合法。它支持18位和15位身份证号码,并通过正则表达式来进行匹配。在main
方法中,提供了四个测试示例,展示了不同身份证号码的校验结果。
评论已关闭