JavaScript 中身份证的正则表达式

关于身份证号,以下正确的正则表达式为()

A. isIDCard=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
B. isIDCard=/^[1-9]\d{7}((9\d)|(1[0-2]))(([0|1|2]\d)|3[9-1])\d{3}$/;
C. isIDCard=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
D. isIDCard=/^[1-9]\d{5}[1-9]\d{3}((9\d)|(1[9-2]))(([0|1|2]\d)|3[9-1])\d{4}$/;

身份证有以下两种情况

  • 15位身份证构成:六位出生地区码+六位出生日期码+三位顺序码
  • 18位身份证构成:六位出生地区码+八位出生日期码+三位顺序码+一位校验码

复习

^:起始符号,^x表示以x开头
$:结束符号,x$表示以x结尾
[n-m]:表示从n到m的数字
\d:表示数字,等同于[0-9]
X{m}:表示由m个X字符构成,\d{4}表示4位数字
选项A. isIDCard=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
^[1-9]:匹配以1-9开头的字符。
\d{7}:匹配7个数字,表示地址码后7位。
((0\d)|(1[0-2])):匹配月份,01-09或10-12。
(([0|1|2]\d)|3[0-1]):匹配日期,00-29或30-31
\d{3}:匹配3个数字,表示顺序码。
选项B. isIDCard=/^[1-9]\d{7}((9\d)|(1[0-2]))(([0|1|2]\d)|3[9-1])\d{3}$/;

这里月份错误90-99,10-12
日期也错了00-29,39-31

C. isIDCard=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;
^[1-9]:匹配以1-9开头的字符。
\d{5}:匹配5个数字,表示地址码后5位。
[1-9]\d{3}:匹配4个数字,表示年份。
((0\d)|(1[0-2])):匹配月份,01-09或10-12。
(([0|1|2]\d)|3[0-1]):匹配日期,00-29或30-31
\d{4}:匹配4个数字,表示顺序码和校验码
D. isIDCard=/^[1-9]\d{5}[1-9]\d{3}((9\d)|(1[9-2]))(([0|1|2]\d)|3[9-1])\d{4}$/;

与B选项一样,月份日期都错了
故最终选项AC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值