@十个太阳 需要的万能表单身份证正则校验方法
方法处理如下:
正则表达式分析:
/^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|31)|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}([0-9]|x|X)$/;
0903 3059
^开头
前六位代表地区号:
[1-9][0-9]{5} 第一位非0 限定在1-9任意数,后五位限定在0到9
第7位到到10位生日年号:
(19|20)[0-9]{2} 新版的没必要判断18xx年的,都是19xx年到 20xx 后出生的,所以前两位限定在19、20,后面两位0-9确实有点粗糙[0-9]{2},毕竟还没有202x后的,但是为了兼容19xx,所以直接限定在1-9里,否则需要更多的判断,太复杂
第10位到14位生日月日号:
((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|31)|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
按照月大月小来判定生日,独立出二月最大29号的判断
后四位编码号:
[0-9]{3}([0-9]|x|X) 最后一位有x的判断
$正则结束
此正则虽然不是非常严谨,但是一般情况下绝对够用了,至少一般不知道的编码规则的,乱填不出来,如果觉得确实不够严谨,那就去找更复杂的正则替换即可,总之判断变量用atc_变量的方式就可以获取对应dom元素