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