【正则】二代身份证正则表达式

CSDN话题挑战赛第2期
参赛话题:学习笔记

二代身份证号码解释

1、前六位是地址码
●第一位、第二位表示省或直辖市或自治区;
●第三位、第四位代表市辖区;
●第五位、第六位代表区、县、市等
2、中间8位出生年月日
3、后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位数字是1,第2位数字的范围只会是1-5
2、第2位数字只有重庆是0,也就是说只有“50”这个组合,这里也可以优化
3、第3至6位,由于数量太大,所有这里直接给了0-9随机
4、前六位与省市对应关系

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尤成军军军

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值