200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 中国大陆身份证正则表达式(严格验证省份和日期)

中国大陆身份证正则表达式(严格验证省份和日期)

时间:2019-12-29 21:06:49

相关推荐

中国大陆身份证正则表达式(严格验证省份和日期)

中国大陆身份证正则表达式(严格验证省份和日期)

详细讲解

身份证号前两位为省级行政区划

11: “北京”,

12: “天津”

13: “河北”,

14: “山西”,

15: “内蒙古”,

正则表达:1[1-5]

21: “辽宁”,

22: “吉林”,

23: “黑龙江”,

正则表达:2[1-3]

31: “上海”,

32: “江苏”,

33: “浙江”,

34: “安徽”,

35: “福建”,

36: “江西”,

37: “山东”,

正则表达:3[1-7]

41: “河南”,

42: “湖北”,

43: “湖南”,

44: “广东”,

45: “广西”,

46: “海南”,

正则表达:4[1-6]

50: “重庆”,

51: “四川”,

52: “贵州”,

53: “云南”,

54: “西藏”,

正则表达:5[0-4]

61: “陕西”,

62: “甘肃”,

63: “青海”,

64: “宁夏”,

65: “新疆”,

正则表达:6[1-5]

省级部分合并正则表达:[16][1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]

前六位为县级行政区划,为省级代码加4位数字

正则表达:([16][1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4])\d{4}

日期部分4位年

4位年,从1900到2099:(19|20)\d{2}

月和日期

0[469](0[1-9]|[12][0-9]|30)4、6、9月有30天

11(0[1-9]|[12][0-9]|30)11月有30天

上面两行合并后表达为:(?:0[469]|11)(?:0[1-9]|[12][0-9]|30)

0[13578](0[1-9]|[12][0-9]|3[01])1、3、5、7、8月有31天

1[02](0[1-9]|[12][0-9]|3[01])10月和12月有31天

上面两行合并后表达为:(?:0[13578]|1[02])(?:0[1-9]|[12][0-9]|3[01])

02(0[1-9]|[12][0-9])2月最多29天,但约有3/4的时候是28天,这里没办法判断不润年的情况

合并月份和日期部分如下:(?:(?:0[469]|11)(?:0[1-9]|[12][0-9]|30)|(?:0[13578]|1[02])(?:0[1-9]|[12][0-9]|3[01])|02(?:0[1-9]|[12][0-9]))

后四位,不对校验位进行检查(太复杂,正则不可能实现)\d{3}[\dXx]

完整的身份证正则表达式

(?:[16][1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4])\d{4}(?:19|20)\d{2}(?:(?:0[469]|11)(?:0[1-9]|[12][0-9]|30)|(?:0[13578]|1[02])(?:0[1-9]|[12][0-9]|3[01])|02(?:0[1-9]|[12][0-9]))\d{3}[\dXx])

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。