这个正则表达式 /{(\w+)}/g
应该匹配大括号 {}
之间 的每个单词字符。相反,我在 Regex101 JavaScript engine 中得到了不同的结果和 Chrome 控制台。
Regex101 按预期工作,.match
函数在没有 g
标志的情况下工作,但它无法检索花括号之间的内容一旦我应用它(它应该获取 ["asd","asd2"]
,而是获取 ["{asd}","{asd2}"]
)
为什么会这样?谢谢!
最佳答案
String.prototype.match
将“g”标志添加到模式时,函数返回所有匹配项的数组。
您想使用 RegExp.prototype.exec
获取捕获组的函数:
exec() 保存它在 RegExp 对象中找到的匹配项的最后一个索引,并在您下次运行它时从那里继续。因此,您需要遍历字符串直到函数返回 null 以获取所有匹配项。
var str = "this {is} a {word} {test}";
var re = /{(\w+)}/g;
do{
var res = re.exec(str);
console.log(res);
} while( res );
关于javascript - Regex101 与 JavaScript String.match 分歧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28920384/