Javascript 正则表达式是否匹配此重复模式?

Javascript 正则表达式是否匹配此重复模式?,javascript,regex,Javascript,Regex,我能够将字符串[ORG]someText与这个正则表达式匹配:/^\[(ORG | PER | LOC)]\s[^\W|]+$/ var selectedText=“[ORG]dd”; if(selectedText.match(/^\[(ORG | PER | LOC)]\s[^\W|]+$/){ 控制台日志(“工作”); }它应该是: /^(\[(ORG|PER|LOC)]\s[^\W_]+(?:\s|$))+$/ 。。。也就是说,在空白和行尾边界之间添加一个替代项(因为字符串中的最后一

我能够将字符串
[ORG]someText
与这个正则表达式匹配:
/^\[(ORG | PER | LOC)]\s[^\W|]+$/

var selectedText=“[ORG]dd”;
if(selectedText.match(/^\[(ORG | PER | LOC)]\s[^\W|]+$/){
控制台日志(“工作”);
}
它应该是:

/^(\[(ORG|PER|LOC)]\s[^\W_]+(?:\s|$))+$/
。。。也就是说,在空白和行尾边界之间添加一个替代项(因为字符串中的最后一个模式不会以空白结尾)

。还要注意,如果您只需要检查字符串是否与该模式匹配,那么
string#match
方法实际上是一种过度使用;相反,您应该
RegExp#text

var tagsPattern = /^(\[(ORG|PER|LOC)]\s[^\W_]+(\s|$))+$/;
if (tagsPattern.test(str)) {
  // matches 
}

你为什么不简单地使用全局标志
/\[(ORG | PER | LOC)]\s[^\W|]+$/g
?那么你必须移除锚,但这是一个很好的观点。@Tomalak我无法让它工作(另一方面,
[^\W_]
最好写成
[a-Za-z0-9]
[a-z0-9]
,带有
i
标志)-尽量避免regex中的双重否定,只是为了缩短表达式。想想那些维护该代码的人。没有这些“聪明”标记,regex就很难阅读了构造。@RahulDesai这不是在JavaScript中进行全局匹配的方式。比较