解析两个元素之间的值

时间:2012-01-20 20:09:58

标签: javascript regex

输入:

var str = 'text {{value1}} text {{value2}}text{{value1}}';

正则表达式:

var result = str.match(/({{\S+}})+/ig);

输出:

["{{value1}}", "{{value2}}text{{value1}}"]

我应该使用什么正则表达式来获得下一个结果:

["{{value1}}", "{{value2}}", "{{value1}}"]

2 个答案:

答案 0 :(得分:2)

你需要转义花括号,因为它们是指定how many repeats to match 的特殊语法

/({{\S+?}})+/ig

编辑:我没注意到实际添加non-greedy specifier就行了。

答案 1 :(得分:2)

将正则表达式更改为非贪心:

var result = str.match(/({{\S+?}})+/ig);

我在?之后添加了\S+。这使+匹配尽可能少。