身份证号正则包含闰年校验每个月等内置有js实现

1、省份编码

目前还未实现控制前六位的省市区的校验。如有好的实现方案 欢迎评论!

[1-9]\d{5}

2、年份

(18|19|20)?\d{2}

3、月份为 1, 3, 5, 7, 8, 10, 12,天数范围为 01 - 31,匹配MMDD的正则表达式为:

(0[13578]|1[02])(0[1-9]|[12][0-9]|3[01])

4、月份为 4, 6, 9, 11,天数范围为 01-30,匹配MMDD的正则表达式为:

(0[469]|11)(0[1-9]|[12][0-9]|30)

5、月份为 2,考虑平年情况,匹配MMDD的正则表达式为:

02(0[1-9]|[1][0-9]|2[0-8])

6、闰年

能被4整除但不能被100整除的年份。
(1[89]|20)(0[48]|[2468][048]|[13579][26])
能被400整除的年份,只有1900和2000两个年份
(19|20)00
闰年的2月份有29天
(((1[89]|20)(0[48]|[2468][048]|[13579][26]))|((19|20)00))0229

7、校验码4位

\d{3}(\d|X|x)

8、包含闰年 yyyyMMdd:

((1[89]|20)\d{2}(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((((1[89]|20)(0[48]|[2468][048]|[13579][26]))|((19|20)00))0229)

9、合并起来身份证正则式为:

完整正则

[1-9]\d{5}(((1[89]|20)\d{2}(((0[13578]|1[0-2])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((((1[89]|20)(0[48]|[2468][048]|[13579][26]))|((19|20)00))0229))\d{3}(\d|X|x)

点击复制

[1-9]\d{5}(((1[89]|20)\d{2}(((0[13578]|1[0-2])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((((1[89]|20)(0[48]|[2468][048]|[13579][26]))|((19|20)00))0229))\d{3}(\d|X|x)

10、js测试

//声明正则表达式
const regex = /^[1-9]\d{5}(((1[89]|20)\d{2}(((0[13578]|1[0-2])(0[1-9]|[12][0-9]|3[01]))
|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((((1[89]|20)(0[48]|
[2468][048]|[13579][26]))|((19|20)00))0229))\d{3}(\d|X|x)$/;
//声明方法
const isValidID = (id) => regex.test(id);
//测试结果
console.log(isValidID('510482199805084410')); 
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值