javascript - Regex101 与 JavaScript String.match 分歧

标签 javascript regex

这个正则表达式 /{(\w+)}/g 应该匹配大括号 {} 之间 的每个单词字符。相反,我在 Regex101 JavaScript engine 中得到了不同的结果和 Chrome 控制台

regex 101 vs js engine

Regex101 按预期工作,.match 函数在没有 g 标志的情况下工作,但它无法检索花括号之间的内容一旦我应用它(它应该获取 ["asd","asd2"],而是获取 ["{asd}","{asd2}"])

为什么会这样?谢谢!

最佳答案

String.prototype.match将“g”标志添加到模式时,函数返回所有匹配项的数组。

您想使用 RegExp.prototype.exec获取捕获组的函数:

exec() 保存它在 RegExp 对象中找到的匹配项的最后一个索引,并在您下次运行它时从那里继续。因此,您需要遍历字符串直到函数返回 null 以获取所有匹配项。

Demo on JSFiddle

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/

相关文章:

javascript - 替换为正则表达式返回未定义

php - 正则表达式匹配双引号字符串,php标签内没有变量

javascript - 在 HTML 和 CSS 的表单中添加个人资料图片

javascript - JSFiddle 问题 : Function Is Not defined

Javascript 图片源更改 addEventListener "click"事件

java - 获取单引号或空格之间的字符串

Javascript 函数每次调用时都不会执行

javascript - 从 Javascript 对象中检索特定值

php - 使用 PHP 如何找到 CSS 标签/id/类并替换大括号内的样式?

Java 正则表达式 Html