我创建了以下正则表达式,它匹配9个连续数字或14个连续数字。
^[0-9]{14}$|^[0-9]{9}$
如何使此正则表达式匹配9个连续数字或14个连续数字或空值?
基本上我想修改正则表达式,以便用户不需要为此字段输入值。或者换句话说,对此字段的验证是可选的。
答案 0 :(得分:1)
怎么样:
if (value.length && !value.match(/^(?:[0-9]{14}|[0-9]{9})$/) {
alert('invalid value');
}
如果string为空,它将通过;如果非空,则必须与正则表达式匹配。
正则表达式解决方案:
if (!value.match(/^(?:[0-9]{14}|[0-9]{9})?$/) {
alert('invalid value');
}
答案 1 :(得分:1)
只需添加另一种选择。
^[0-9]{14}$|^[0-9]{9}$|^$
你可以将它重构为可选9,然后是另一个可选的5位数。
^([0-9]{9}([0-9]{5})?)?$
如果您不需要捕获组,则(?:...)
的非捕获组会稍微快一些,但在这种情况下,差异可以忽略不计。