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]); } |