关于正则表达式:JavaScript RegExp匹配组采用不需要的括号

JavaScript RegExp matching group takes unwanted parentheses

本问题已经有最佳答案,请猛点这里访问。

我收到了这样的短信:做[a]和[b]

我想提取所有由()包裹的单词。我正在使用匹配方法:

1
2
3
var text ="do[A]and[B]";
var regexp = /\[(\w+)\]/g;
var result = text.match(regexp);

所以我是说,我想匹配所有用[]包装的单词,但只有包装的部分应该在组/内存中。我一直在得到结果中的括号:

1
["[A]","[B]"]

预期结果为:

1
["A","B"]

我以为这是小菜一碟,但我一定错过了什么。


对于这种特殊情况,您不需要捕获组:

1
2
>>>"do[A]and[Bbbb]".match(/\w+(?=])/g);
["A","Bbbb"]

会的。


为了使用子模式,没有简单的快捷方式。

相反,您必须对字符串重复执行regex并收集所需的子模式。像这样:

1
2
3
4
5
6
var text ="do[A]and[B]",
    regexp = /\[(\w+)\]/g,
    result = [], match;
while(match = regexp.exec(text)) {
    result.push(match[1]);
}