[英]RegEx to extract words in brackets not working
我正在使用RegEx和exec提取单词,但它会返回完整的第一个匹配项,而不是分别返回所有匹配项。
字符串为'one two [three four] five [six] seven [nine ten]'
。 结果应为'three four'
, 'six'
, 'nine ten'
,而不是'[three four] five [six] seven [nine ten]'
。
var text = "one two [three four] five [six] seven [nine ten]"
var brackets = /\[([^]+)\]/g;
var match;
while (match = brackets.exec(text)) {
console.log(match);
}
我想念什么?
问题在于捕获组([^]+)
。
[^]+
匹配任何字符,包括换行符,因为在否定的字符类中未指定任何内容。
使用以下正则表达式
/\[([^[\]]+)\]/g
[^[\\]]+
:将匹配一个或多个除方括号[
和]
以外的字符。
var text = "one two [three four] five [six] seven [nine ten]" var brackets = /\\[([^[\\]]+)\\]/g; var match; while (match = brackets.exec(text)) { console.log(match[1]); }
您也可以使用/\\[(.*?)\\]/g
其中.*?
将匹配除]
以外的任何内容。
var text = "one two [three four] five [six] seven [nine ten]" var brackets = /\\[(.*?)\\]/g; var match; while (match = brackets.exec(text)) { console.log(match[1]); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.