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中进行全局匹配的方式。比较