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]+(?=[^{}]*})