Javascript 如何在其他两个字符串之间获取多个字符串

Javascript 如何在其他两个字符串之间获取多个字符串,javascript,regex,Javascript,Regex,我正在尝试查找{和}之间以$开头,后跟[\w.]+但不以数字开头的所有值。这在获取值时起作用,但是,它只获取最后一项。我要寻找的是这些项目的列表,因此在本例中,我希望我的数组包含(基于示例): 执行时,$name不包括在此数组中,如下所示: let result='$welcome:{{{I'm$name and I'm$age year old}}'。匹配(/\{\{.*(\$(?!\d |\)[\w.]+).\}/) console.log(result)您可以尝试以下正则表达式: \$[

我正在尝试查找
{
}
之间以
$
开头,后跟
[\w.]+
但不以数字开头的所有值。这在获取值时起作用,但是,它只获取最后一项。我要寻找的是这些项目的列表,因此在本例中,我希望我的数组包含(基于示例):

执行时,
$name
不包括在此数组中,如下所示:

let result='$welcome:{{{I'm$name and I'm$age year old}}'。匹配(/\{\{.*(\$(?!\d |\)[\w.]+).\}/)

console.log(result)
您可以尝试以下正则表达式:

\$[.\w]+(?=[^{}]*})

这在
{
}
之间并不匹配,但它保证不会找到大括号之外的匹配项。它假定输入字符串中不出现单个不平衡大括号


另一种方法是匹配整个
{…}
块,然后查找
\$[\w.]+
,但如果需要在原始输入字符串中替换它们,这不是一个容易的选择。

尝试
\$[.\w]+(?=[^{}]*})
。或者先匹配该块,然后在其上运行另一个正则表达式。这似乎起作用了。我正在尝试您的第二种方法,但是,
/\$(?!(\d|\)[。\w]+/
只得到
$name
而不是
$age
哦,我没有修复它!
\$[.\w]+(?=[^{}]*})