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

身份证的组成


18位
1-2位省、自治区、
3-4位地级市、盟、自治州代码;
5-6位县、县级市、区代码;
7-14位出生年月日,比如19820426代表1982年4月26日;
15-17位为顺序号,其中17位(倒数第二位)男为单数,女为双数;
18位为校验码,0-9和X。作为尾号的校验码,是由把前十七位数字带入统一的公式计算出来的,计算的结果是0-10,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位。X是罗马数字的10,用X来代替10。

let idreg = /^[1-9]\d{5}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$/gi;

let str = ["140123197907295998", "370103198203084035", "23023119730527779X"];

for (let i = 0; i < str.length; i++) {
    console.log(str[i].match(idreg));
}

// ^[1-9] 第一位 不是0
// \d{5} 第二位~第六位 5位数字
// (18|19|20) 第七位 第八位  千年和百年
// \d{2} 第九位 第十位  十年和个位年
// (0[1-9]|1[012]) 第十一位~十二位 月份
// (0[1-9]|[12]\d|3[01]) 第十三~十四位 日
// \d{3} 第十五~十七位 验证码
// (\d|[xX])$ 第十八位 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值