1

我收到如下文字:do[A]and[B]

我想提取由[and包裹的所有单词]
我正在使用匹配方法:

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

所以我说我想匹配由 [] 包裹的所有单词,但只有被包裹的部分应该在组/内存中。我不断在结果中得到 [ ] 括号:

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

预期结果是

["A","B"]

我认为这是小菜一碟,但我一定错过了一些东西。

4

2 回答 2

2

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

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

会做。

于 2013-10-24T17:19:09.650 回答
1

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

相反,您必须在字符串上重复执行正则表达式并收集您想要的子模式。像这样的东西:

var text = "do[A]and[B]",
    regexp = /\[(\w+)\]/g,
    result = [], match;
while(match = regexp.exec(text)) {
    result.push(match[1]);
}
于 2013-10-24T15:42:44.837 回答