Javascript正则表达式提取变量

时间:2015-04-10 12:01:30

标签: javascript regex

我在Javascript中有一个字符串,其中包含格式为${var-name}的变量。例如:

'This is a string with ${var1} and ${var2}'

我需要在数组中获取这些变量:['var1','var2']

这是否可以使用正则表达式?

3 个答案:

答案 0 :(得分:2)

尝试使用:

/\$\{(\w+?)\}/

运行示例,非常感谢@RGraham:

var regex = new RegExp(/\$\{(\w+?)\}/g),
    text = "This is a string with ${var1} and ${var2} and {var3}",
    result,
    out = [];
while(result = regex.exec(text)) {
    out.push(result[1]);
}
console.log(out);

答案 1 :(得分:2)

regex - \${([^\s}]+)(?=}) - 应该有效。

说明:

  • \${ - 匹配文字${
  • ([^\s}]+) - 一个匹配一个或多个不是空格或字面}的字符的捕获组。
  • (?=}) - 一个积极的预测,用于检查我们是否最终匹配文字}

以下是示例代码:

var re = /\${([^\s}]+)(?=})/g; 
var str = 'This is a string with ${var1} and ${var2} and {var3}';
var arr = [];
 
while ((m = re.exec(str)) !== null) {
    arr.push(m[1]);
}

alert(arr);

答案 2 :(得分:0)

var str = 'This is a string with ${var1} and ${var2}';

var re = /\$\{(\w+?)\}/g;
var arr = [];
var match;
while (match = re.exec(str)) {
  arr.push(match[1]);
}

console.log(arr);