日期:2014-05-19  浏览次数:20959 次

请问我想同时满足15位和18位的身份证号正则验证该怎么写?
请问我想同时满足15位和18位的身份证号验证该怎么写?
现在我写了如下正则      

  <script>
                function   ValidatePersonLicense()
                {
                        var   objLicense   =   document.getElementById( 'txt1 ');
                        var   strLicense   =   objLicense.value;
                        var   regexLicense   =   /^[1-9]{1}[0-9]{14}|[1-9]{1}[0-9]{16}[0-9xX]{1}$/;//
                        alert(regexLicense.test(strLicense));
                }
        </script>

其中
/^[1-9]{1}[0-9]{14}|[1-9]{1}[0-9]{16}[0-9xX]{1}$/
[1-9]{1}[0-9]{14}可以验证15位身份证号
[1-9]{1}[0-9]{16}[0-9xX]{1}可以验证18位身份证号

但是如果我想同时可以验证15位和18位的身份证号该如何写?
按我代码中写的加上   |   好像是不行的,请指点
谢谢

------解决方案--------------------
分开验证嘛,算算长度,满足18的用18的验证方法
满足15的用15的验证方法
我是菜鸟,提点笨方法~
------解决方案--------------------
加个( )试试
/^([1-9]{1}[0-9]{14})|([1-9]{1}[0-9]{16}[0-9xX]{1})$/
------解决方案--------------------
\d{15}|\d{18}
------解决方案--------------------
我晕,楼上的楼上答案值得一试,
楼上的请注意,18位身份证不一定是纯数字,有字母哒!

------解决方案--------------------
^([1-9]\d{14}(\d{2}[0-9xX])?)$
------解决方案--------------------
试下这段代码:
var regexLicense = /^[1-9][0-9]{14}$|^[1-9]{1}[0-9]{16}[0-9xX]{1}$/;
var sourceString = "53252219800110211xdf ";
WL(regexLicense.test(sourceString));//输出