我在Javascript中有一个字符串,其中包含格式为${var-name}
的变量。例如:
'This is a string with ${var1} and ${var2}'
我需要在数组中获取这些变量:['var1','var2']
。
这是否可以使用正则表达式?
答案 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);