Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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 - Fatal编程技术网

使用javascript正则表达式提取大括号内的内容

使用javascript正则表达式提取大括号内的内容,javascript,regex,Javascript,Regex,假设我有一根绳子 let str = 'foo ${bar}baz ${foobar}' 我想提取${和}之间的所有元素 所以我想返回['bar',foobar'],理想情况下使用Javascript中的String的match()函数。有没有聪明的正则表达式向导愿意帮忙?如果正则表达式不是真正的约束条件,我会这样做: let str = 'foo ${bar}baz ${foobar}' console.log(str.split("${").slice(1).map(item =>

假设我有一根绳子

let str = 'foo ${bar}baz ${foobar}'
我想提取
${
}
之间的所有元素

所以我想返回
['bar',foobar']
,理想情况下使用Javascript中的
String
match()
函数。有没有聪明的正则表达式向导愿意帮忙?

如果正则表达式不是真正的约束条件,我会这样做:

let str = 'foo ${bar}baz ${foobar}'

console.log(str.split("${").slice(1).map(item => item.split("}")[0]))
// Outputs : ["bar", "foobar"]

否则,这里有一个正则表达式可能适合您的需要:
\${(.*)}

谢谢,我想得太多了。虽然这可能是正确的答案,但如果没有注释,只有代码,它看起来就没有说服力。请考虑添加一个更好的机会被接受的评论。
var str = 'foo ${bar}baz ${foobar}',
    exp = /\$\{(\w*)\}/g,
    matched,
    matches = [];

while ((matched = exp.exec(str)) !== null) {
  matches.push(matched[1]);
}

console.log(matches);
// Outputs: ["bar", "foobar"]