二代身份证号码解释
- 前六位是地址码
- 第一位、第二位表示省或直辖市或自治区;
- 第三位、第四位代表市辖区;
- 第五位、第六位代表区、县、市等
- 中间8位出生年月日
- 后4位
- 3位顺序码
- 1位校验位组成
二代身份证地址码
华北地区:北京市|110000,天津市|120000,河北省|130000,山西省|140000,内蒙古自治区|150000
东北地区: 辽宁省|210000,吉林省|220000,黑龙江省|230000
华东地区: 上海市|310000,江苏省|320000,浙江省|330000,安徽省|340000,福建省|350000,江西省|360000,山东省|370000
华中地区: 河南省|410000,湖北省|420000,湖南省|430000
华南地区:广东省|440000,广西壮族自治区|450000,海南省|460000
西南地区:重庆市|500000,四川省|510000,贵州省|520000,云南省|530000,西藏自治区|540000
西北地区: 陕西省|610000,甘肃省|620000,青海省|630000,宁夏回族自治区|640000,新疆维吾尔自治区|650000
特别地区:台湾省|710000,香港特别行政区|810000,澳门特别行政区|820000
身份证正则表达式
表达式一: 第1位数字范围是1至8: [1-8] 第2位数字范围是0至7: [0-7] 第3至第6位: [0-9]{4} 第7至10位表示年,范围在1900年-2099年: (19|20)[0-9]{2} 第11至12位(月): ((0[1-9])|(10|11|12)) 第13至14位(日): (([0-2][1-9])|10|20|30|31) 第15至18位: [0-9]{3}[0-9Xx]
表达式一
[1-8][1-7][0-9]{4}(19|20)[0-9]{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)[0-9]{3}[0-9Xx]
表达式二(列举前两位所有的组合):
(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)[0-9]{4}(19|20)[0-9]{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)[0-9]{3}[0-9Xx]
表达式三(在表达式二的基础上优化):
(1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5]|71|8[1-2])[0-9]{4}(19|20)[0-9]{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)[0-9]{3}[0-9Xx]
注意点:
- 前两位数字依旧可以做范围的缩减,比如第1位数字是1,第2位数字的范围只会是1-5
- 第2位数字只有重庆是0,也就是说只有“50”这个组合,这里也可以优化
- 第3至6位,由于数量太大,所有这里直接给了0-9随机