Java二代身份证正则表达式分析

二代身份证正则:

while (true) {
	Scanner scan = new Scanner(System.in);
	String line = scan.next();
	String pattern = "^[1-9]\\d{5}[1-9]\\d{3}((0[1-9])|(1[0-2]))(0[1-9]|([1|2][0-9])|3[0-1])((\\d{4})|\\d{3}X)$";
	boolean isMatch = Pattern.matches(pattern, line);
	System.out.println(isMatch);
}

分步解读:

1.[1-9]\\d{5} 地区代码,第一位不为0,共计6位。

2.[1-9]\\d{3} 出生年份,年份第一位不为0,共计4位。

3.((0[1-9])|(1[0-2])) 出生月份,月份第一位为0或者1,如果为0则第二位为1-9,如果为1则为0-2,共计2位。

4.(0[1-9]|([1|2][0-9])|3[0-1]) 出生日期,日期第一位如果为0则第二位为1-9,如果为1,2第二位为0-9,如果为3第二位为0-1

5.((\\d{4})|\\d{3}X) 结尾可以为四位任意数字或者为三位数加大写X(此处注意传进身份证号大小写)

你可能感兴趣的:(正则表达式,正则表达式,java,二代身份证)