我对Javascript中的正则表达式相当新,我正在尝试并且没有做一些看似简单的事情。基本上,我需要评估字符串是否满足2个正则表达式条件中的1个。基本上,输入字符串可以有两种形式中的一种,其中任何一种都是有效的,其他任何形式都是无效的。
所以说我有2个正则表达式:a= ^[0-9]\d{3}$
和b= ^1-\d{5}
,并希望在继续之前查看输入字符串是否匹配。我想做的是这样的事情:
If((!a.test(input)) || (!b.test(input)))
{
alert("Invalid ID");
}
我也尝试过使用“|”的变体操作者:
if((!a|!b.test(input)))
但到目前为止没有任何效果。通常我会得到声明来验证1或者没有,但从来没有。我不确定我在这里做错了什么。
谢谢!
答案 0 :(得分:7)
我认为你的布尔逻辑是错误的。要在继续之前匹配一个或另一个,失败的情况是它不匹配这两个测试:
if(!a.test(input) && !b.test(input))
{
alert("Invalid ID");
}
此外,If
应为if
,并且小写i
,我删除了不必要的括号级别,以使其更容易阅读。
您还可以将两个正则表达式合并为一个并立即进行测试:
var re = /^[0-9]\d{3}$|^1-\d{5}/;
if (!re.test(input)) {
alert("Invalid ID");
}
此外,您不会显示真实的代码,但不会在您的问题中声明正则表达式。也许这就是你如何将它们复制到问题中,但它们使用的/regex here/
语法是:
var a = /^[0-9]\d{3}$/;
var b = /^1-\d{5}/;
注意:在你的第二个正则表达式中,你是否打算让它像第一个一样在最后有一个$
?
答案 1 :(得分:0)
我会这样做:
if (!input.match(/^(\d{4}|1-\d{5})$/)) {
alert('Invalid ID');
}
请注意,我使用的是\d
而不是[0-9]
,这是相同的。