我正在编写一个节点模块,我想找到dust模板使用的所有部分。
我有
regex = /\{\s*\>\s*("[^"]*").*\}/
和
test = " something { > \"templatename\" randomchars\" key=\"{random}\" } random { > \"base/templatename2\" thing=\"random\" }"
我想捕获 templatename
和 base/templatename2
。
我尝试了使用和不使用 g
标志,并且尝试了 regex.exec(test)
两次和 test.match(regex)
但是他们都没有给我两个。我做错了什么?
最佳答案
使 .*
不贪婪 (.*?
),这样它就不会覆盖以下模板名称:
var matches = test.match(/\{\s*>\s*("[^"]*").*?\}/g)
这为您提供了匹配项,而不是子匹配项。要获取组,请使用 exec
:
var r = /\{\s*>\s*("[^"]*").*?\}/g, m;
while (m = r.exec(test)) {
console.log(m[1]);
}
附注:无需转义 >
。
关于javascript - 捕获多次出现的 javascript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21361372/