捕获多次出现的javascript正则表达式

时间:2014-01-26 08:34:23

标签: javascript regex dust.js

我正在编写一个节点模块,我想查找一个灰尘模板使用的所有部分。

我有

regex = /\{\s*\>\s*("[^"]*").*\}/

test = " something { > \"templatename\" randomchars\" key=\"{random}\" } random { > \"base/templatename2\" thing=\"random\" }"

我想同时捕捉templatenamebase/templatename2

我尝试使用g旗帜,但我尝试regex.exec(test)两次和test.match(regex),但他们都没有给我两个。我做错了什么?

1 个答案:

答案 0 :(得分:2)

.*不贪婪(.*?),以便它不会涵盖以下模板名称:

var matches = test.match(/\{\s*>\s*("[^"]*").*?\}/g)

这为您提供匹配,而不是子匹配。要获取群组,请使用exec

var r = /\{\s*>\s*("[^"]*").*?\}/g, m;
while (m = r.exec(test)) {
  console.log(m[1]); 
}

侧面通知:无需转义>