我正在使用类似 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 命名约定,这意味着:
- 有效变量以字母、下划线或“$”符号开头,后跟字母、数字、下划线或“$”的任意组合;
- 变量周围的前导和尾随空格将被忽略。
总之,我们可能有一个从execas返回的变量${ _$abc12_$ },我需要一个 RegExp 来调用replace它,它会返回 just _$abc12_$。
感谢大家的帮助!