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

时间:2018-11-08 16:46:48

标签: javascript regex

我正在尝试查找{{}}之间的所有值,这些值以$开头,后跟[\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)

1 个答案:

答案 0 :(得分:1)

您可以尝试以下正则表达式:

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

Live demo

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

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