输入:
var str = 'text {{value1}} text {{value2}}text{{value1}}';
正则表达式:
var result = str.match(/({{\S+}})+/ig);
输出:
["{{value1}}", "{{value2}}text{{value1}}"]
我应该使用什么正则表达式来获得下一个结果:
["{{value1}}", "{{value2}}", "{{value1}}"]
答案 0 :(得分:2)
你需要转义花括号,因为它们是指定how many repeats to match 的特殊语法
/({{\S+?}})+/ig
编辑:我没注意到实际添加non-greedy specifier就行了。
答案 1 :(得分:2)
将正则表达式更改为非贪心:
var result = str.match(/({{\S+?}})+/ig);
我在?
之后添加了\S+
。这使+
匹配尽可能少。