关于身份证号,以下正确的正则表达式为()
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