Javascript - 在一行上评估多个正则表达式

ewo*_*ack 2 javascript regex

我对Javascript中的正则表达式相当新,我正在尝试并且没有做一些看似简单的事情.基本上,我需要评估字符串是否满足2个正则表达式条件中的1个.基本上,输入字符串可以有2种形式中的1种,其中任何一种都是有效的,其他任何形式都是无效的.

所以说我有2个正则表达式:a= ^[0-9]\d{3}$并且b= ^1-\d{5}想要在继续​​之前查看输入字符串是否匹配.我想做的是这样的:

If((!a.test(input)) || (!b.test(input)))
{
   alert("Invalid ID");
}
Run Code Online (Sandbox Code Playgroud)

我也试过使用"|"的变体 运营商:

if((!a|!b.test(input)))
Run Code Online (Sandbox Code Playgroud)

但到目前为止还没有任何效果.通常我会得到声明来验证1或者没有,但从来没有.我不确定我在这里做错了什么.

谢谢!

jfr*_*d00 7

我认为你的布尔逻辑是错误的.要在继续之前匹配其中一个,失败的情况是它与两个测试都不匹配,如下所示:

if(!a.test(input) && !b.test(input))
{
   alert("Invalid ID");
}
Run Code Online (Sandbox Code Playgroud)

此外,你If应该if使用小写i,我删除了不必要的括号级别,使其更容易阅读.

您还可以将两个正则表达式合并为一个并立即对其进行测试:

var re = /^[0-9]\d{3}$|^1-\d{5}/;

if (!re.test(input)) {
    alert("Invalid ID");
}
Run Code Online (Sandbox Code Playgroud)

此外,您不显示真实代码,但未在您的问题中声明正则表达式.也许这就是你如何将它们复制到问题中,但它们使用的/regex here/语法是:

var a = /^[0-9]\d{3}$/;
var b = /^1-\d{5}/;
Run Code Online (Sandbox Code Playgroud)

注意:在你的第二个正则表达式中,你是否打算$像第一个一样在最后?