求兼容15位和18位身份证精确验证正则表达式

解决方案 »

  1.   

    "^(\d{15}|\d{14}[\dX]|\d{17}[\dX])$"不知道15位身份证号末尾有没有带X的如果没有"^(\d{15|\d{17}[\dX])$" 这样就可以
      

  2.   

    这样的没有准确验证身份证号,比如年份19630231也当成有效的身份证号码,其实这是错误的。
    为什么下面两个正则表达式是错误的呢?
    /^[1-9][0-7]\d{4}((19\d{2}(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(19\d{2}(0[13578]|1[02])31)|(19\d{2}02(0[1-9]|1\d|2[0-8]))|(19([13579][26]|[2468][048]|0[48])0229))\d{3}(\d|X|x)?$/
    地址码精确一点的表达式: /^((1[1-5])|(2[1-3])|(3[1-7])|(4[1-6])|(5[0-4])|(6[1-5])|71|(8[12])|91)\d{4}((19\d{2}(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(19\d{2}(0[13578]|1[02])31)|(19\d{2}02(0[1-9]|1\d|2[0-8]))|(19([13579][26]|[2468][048]|0[48])0229))\d{3}(\d|X|x)?$/