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

标签 javascript regex dust.js

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

我有

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

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

我想捕获 templatenamebase/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/

相关文章:

javascript - 无颜色或 Material 的 CZML 多边形

json - 如何在 DUSTJS 中通过索引显示数组值

python - 正则表达式子函数不适用于 unicode 字符串

c - 正则表达式教程或书籍

javascript - Dust.js 在渲染时覆盖 Knockout 可观察值

javascript - 使用dust.js中的变量访问对象属性

javascript - 更改 CSS 中的制表符空格长度

javascript - 使用 jQuery 检查哪个元素被单击

javascript - 使用 Javascript 加载 CSS 太慢

正则表达式查找内容问题