我正在尝试创建一个变量名称交换器。简单地迭代JavaScript文件中的行,并使用我可以提供的字典中的随机名称交换每个变量名称。
到目前为止,我可以做到这一点,但我无法针对变量关键字优化搜索正则表达式。
我首先定义我正在寻找的关键字:
const VARIABLE_KEYWORDS = ["var", "let", "const"];
然后我迭代输入文件中的每一行并提取变量名并将它们存储在一个数组中。一旦我存储了所有变量名称,我就将它们设为唯一,然后用随机单词在原始文件中替换它们。
这是我的extractVariables(line)逻辑,其中变量行是一个字符串:
function extractVariables(line) {
let lineCnt = 1;
let found_vars = [];
// if the line is not empty, parse it
if (line.trim().length !== 0) {
// find a variable keyword
for (let key of VARIABLE_KEYWORDS) {
// regex to match the variable keyword and its not inside a string definition \"|\' , and is not used as a property name |\.
var re = new RegExp("(?<!\"|\')\\b" + key + "\\b(?!\"|\')", "g");
// while there are variables declared in the line, add them to the variables array
while ((match = re.exec(line)) != null) {
const indexOfKeyword = match.index + key.length;
// get the name after and store it in an array
if (indexOfKeyword > 0) {
let found_var = line.substr(indexOfKeyword).trim().split(' ').shift();
// if a keyword is found, but no variable defined afterwards do not break everything
if(found_var.length !== 0){
found_vars.push(found_var);
}
}
}
}
}
return found_vars;
}
我的正则表达式缺少一些修复。
new RegExp("(?<!\"|\')\\b" + key + "\\b(?!\"|\')", "g");
有人可以帮帮我吗?