我正在使用类似 ES6 的变量格式,其语法为${varName}
,在处理它们时,我尝试使用以下代码枚举所有指定的唯一变量:
function enumVars(txt) {
var v, names = [];
var reg = /\$\{\s*[a-zA-Z\$_][a-zA-Z0-9\$_]*\s*}/g;
while (v = reg.exec(txt)) {
var svn = v[0].replace(/???/, ''); // stripped variable name;
if (names.indexOf(svn) === -1) {
names.push(svn);
}
}
return names;
}
我无法弄清楚RegExp
从结果中剥离变量名的正确方法exec
。
当我使用v[0]
时,它给了我${varName}
字符串,我需要将它剥离成 just varName
,删除前导${
、尾随和可能驻留在变量周围的}
所有空格。{ }
该变量应遵循 javascript 命名约定,这意味着:
- 有效变量以字母、下划线或“$”符号开头,后跟字母、数字、下划线或“$”的任意组合;
- 变量周围的前导和尾随空格将被忽略。
总之,我们可能有一个从exec
as返回的变量${ _$abc12_$ }
,我需要一个 RegExp 来调用replace
它,它会返回 just _$abc12_$
。
感谢大家的帮助!