正则表达式 校验身份证最全解析 (java 实现)
    		       		warning:
    		            这篇文章距离上次修改已过430天,其中的内容可能已经有所变动。
    		        
        		                
                
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方法中,提供了四个测试示例,展示了不同身份证号码的校验结果。
评论已关闭