Javascript 为正则表达式获取太多匹配项
我用JS编写了一个正则表达式测试程序。然而,对于某些正则表达式,我似乎得到了多个匹配项 例如,如果为内容hello,world提供了regex hello.*,则会报告它与hello,world匹配。但是,如果正则表达式现在设置为hello |再见。*那么报告的匹配是hello,world和hello,而它应该是hello,world 有人能帮我找到代码中的问题吗 提前谢谢。你好|再见。然后报告的匹配是hello,world和hello* 不,第二个匹配只是捕获组的结果,括号之间是什么。忽略它,或使组不捕获:?:hello |再见JavaScript正则表达式的.exec方法将返回整个匹配字符串作为第一个元素,然后返回所有捕获的组作为后续元素。使用正则表达式时:Javascript 为正则表达式获取太多匹配项,javascript,regex,Javascript,Regex,我用JS编写了一个正则表达式测试程序。然而,对于某些正则表达式,我似乎得到了多个匹配项 例如,如果为内容hello,world提供了regex hello.*,则会报告它与hello,world匹配。但是,如果正则表达式现在设置为hello |再见。*那么报告的匹配是hello,world和hello,而它应该是hello,world 有人能帮我找到代码中的问题吗 提前谢谢。你好|再见。然后报告的匹配是hello,world和hello* 不,第二个匹配只是捕获组的结果,括号之间是什么。忽略它,
(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
}