JavaScript RegEx匹配组采用不需要的括号

时间:2013-10-24 15:39:41

标签: javascript regex

我的文字如下:做[A]和[B]

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

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

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

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

预期结果

["A","B"]

我认为这是一块蛋糕,但我必须遗漏一些东西。

2 个答案:

答案 0 :(得分:2)

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

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

会做的。

答案 1 :(得分:1)

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

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

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