这个正则表达式/{(\w+)}/g
应该匹配每个单词字符between大括号{}
。相反,我得到了不同的结果Regex101 JavaScript 引擎 https://regex101.com/r/iD4uP6/1 and Chrome 控制台.
Regex101按预期工作,并且.match
函数无需g
标志,但一旦我应用它,它就无法检索大括号之间的内容(它应该获取["asd","asd2"]
,而是获取["{asd}","{asd2}"]
)
为什么会出现这种情况?谢谢!
The String.prototype.match https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match当“g”标志添加到模式中时,函数返回所有匹配项的数组。
你想使用RegExp.prototype.exec https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec获取捕获组的函数:
exec() 保存在 RegExp 对象中找到的匹配项的最后一个索引,并在下次运行它时从那里继续。因此,您需要循环字符串直到函数返回 null 才能获取所有匹配项。
JSFiddle 上的演示 http://jsfiddle.net/mh8g6egx/
var str = "this {is} a {word} {test}";
var re = /{(\w+)}/g;
do{
var res = re.exec(str);
console.log(res);
} while( res );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)