Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
捕获多次出现的javascript正则表达式_Javascript_Regex_Dust.js - Fatal编程技术网

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

捕获多次出现的javascript正则表达式,javascript,regex,dust.js,Javascript,Regex,Dust.js,我正在编写一个节点模块,我想找到dust模板使用的所有部分 我有 regex = /\{\s*\>\s*("[^"]*").*\}/ 及 我想捕获templatename和base/templatename2 我尝试了使用和不使用g标志,尝试了regex.exec(test)两次和test.match(regex),但两次都没有给出。我做错了什么?使*不贪婪(*?),这样它就不会覆盖以下模板名称: var matches = test.match(/\{\s*>\s*("[^"]*

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

我有

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

我想捕获
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]); 
}
旁注:没有必要退出

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