我对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或者没有,但从来没有.我不确定我在这里做错了什么.
谢谢!
我认为你的布尔逻辑是错误的.要在继续之前匹配其中一个,失败的情况是它与两个测试都不匹配,如下所示:
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)
注意:在你的第二个正则表达式中,你是否打算$像第一个一样在最后?