正则表达式提取括号中的单词不起作用
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);
}
我错过了什么?
捕获组有问题 ([^]+)
。
[^]+
匹配任何字符,包括换行符,因为在否定字符 class.
中没有指定任何内容
使用下面的正则表达式
/\[([^[\]]+)\]/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]);
}
我正在使用 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);
}
我错过了什么?
捕获组有问题 ([^]+)
。
[^]+
匹配任何字符,包括换行符,因为在否定字符 class.
使用下面的正则表达式
/\[([^[\]]+)\]/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]);
}