Javascript 为正则表达式获取太多匹配项

Javascript 为正则表达式获取太多匹配项,javascript,regex,Javascript,Regex,我用JS编写了一个正则表达式测试程序。然而,对于某些正则表达式,我似乎得到了多个匹配项 例如,如果为内容hello,world提供了regex hello.*,则会报告它与hello,world匹配。但是,如果正则表达式现在设置为hello |再见。*那么报告的匹配是hello,world和hello,而它应该是hello,world 有人能帮我找到代码中的问题吗 提前谢谢。你好|再见。然后报告的匹配是hello,world和hello* 不,第二个匹配只是捕获组的结果,括号之间是什么。忽略它,

我用JS编写了一个正则表达式测试程序。然而,对于某些正则表达式,我似乎得到了多个匹配项

例如,如果为内容hello,world提供了regex hello.*,则会报告它与hello,world匹配。但是,如果正则表达式现在设置为hello |再见。*那么报告的匹配是hello,world和hello,而它应该是hello,world

有人能帮我找到代码中的问题吗

提前谢谢。

你好|再见。然后报告的匹配是hello,world和hello*

不,第二个匹配只是捕获组的结果,括号之间是什么。忽略它,或使组不捕获:?:hello |再见

JavaScript正则表达式的.exec方法将返回整个匹配字符串作为第一个元素,然后返回所有捕获的组作为后续元素。使用正则表达式时:

(hello|goodbye).*
括号定义了一个捕获组,因此返回的数组将

[0] = hello, world
[1] = hello

正如Loamhoof在下面建议的那样,您可以添加?:如果不需要的话,可以使组不被捕获。

我想您需要这样的东西

var a = new RegExp("hello, world"); //or your string
var b = "hello, world";
if(a.test(b)){
   //do your stuff
}
else{
   //do your stuff
}

它将只匹配给定的模式。

顺便说一句,您的转义标记是错误的;它需要escape&.@SLaks,编辑为正确的EscapeTag,谢谢。括号定义了一个捕获组。您正在匹配整个字符串并捕获括号中的组。@user2064000:现在情况更糟了。尝试it@user2064000:>将成为&;燃气轮机;
var a = new RegExp("hello, world"); //or your string
var b = "hello, world";
if(a.test(b)){
   //do your stuff
}
else{
   //do your stuff
}