请问我想同时满足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));//输出