十八位身份证号的正则表达式:

 /**
 * 地区号:^[1-9]\\d{5}(六位,不以0开头)
 * 年份:(19\\d{2})|(20[01]\\d)|(202[012])  4
 * 大月及天数:(((0[13578])|10|12)((0[1-9])|(([12][0-9])|30|31)))  4
 * 小月:((0[469])((0[1-9])|(([12][0-9])|30)))
 * 闰月:(02((0[1-9])|([12][0-9])))   (未判断是否闰月,统一为29天)
 * 月份总结:(((0[13578])|10|12)((0[1-9])|(([12][0-9])|30|31)))|(((0[13578])|10|12)((0[1-9])|(([12][0-9])|30)))|(((0[13578])|10|12)((0[1-9])|([12][0-9])))
  */

 总的十八位正则表达式:
"^[1-9]\\d{5}(19\\d{2})|(20[01]\\d)|(202[012])(((0[13578])|10|12)((0[1-9])|(([12][0-9])|30|31)))|(((0[469])|11)((0[1-9])|(([12][0-9])|30)))|(02((0[1-9])|([12][0-9])))//d{4}"

说了是假的,不知道为啥运行后只会判断几位数。还请大佬指教

 

更多推荐

身份证号的正则表达式{超详细(假的)}