我正在尝试查找{{
和}}
之间的所有值,这些值以$
开头,后跟[\w.]+
,但不以数字开头。这在获取值时起作用,但是,它仅获取最后一项。我正在寻找的是这些项目的列表,因此在此示例中,我希望包含数组(基于示例):
['{{I\'m $name and I am $age years old}}', '$name', '$age']
执行后,$name
不包含在此数组中,如下所示:
let result = '$welcome: {{I\'m $name and I am $age years old}}'.match(/\{\{.*(\$(?!\d|\.)[\w.]+).*\}\}/)
console.log(result)
答案 0 :(得分:1)
您可以尝试以下正则表达式:
\$[.\w]+(?=[^{}]*})
这在{{
和}}
之间并没有真正匹配,但可以保证不会找到括号之外的匹配项。假定输入字符串中不出现不平衡的大括号。
另一种方法是匹配整个{{...}}
块,然后寻找\$[\w.]+
,但是如果您需要用原始输入字符串替换它们,这将不是一个容易的选择。