/:未终止组正则表达式:/R<f(9f

/: Unterminated groupregular expression: /R<f(9f

我有 2 个非常大的 txt 文件,文件 A 包含一些字符串,在文件 B 上我有我将在文件 A 上搜索的所有字符串。

实际上我将文件 B 变成了一个数组,并使用 fs 加载了文件 A。问题是文件 B 包含一些奇怪的字符串,例如 R<f(9f 所以当我与正则表达式匹配时,程序退出错误消息 /: Unterminated groupregular expression: /R<f(9f。 所以我想做的是正则表达式匹配 "treats" 字符作为字符串而不是指令。

console.time('program');
const fs = require('fs');


const filePath = "./processhackerfile.txt";
const hackStringsPath = "./hackstrings.txt";

var hackStrings = fs.readFileSync(hackStringsPath).toString().split("\n");
console.log(hackStrings.length);
var file = fs.readFileSync(filePath).toString();

for(i in hackStrings){

    var regex = new RegExp(hackStrings[i].toString(), 'i');
    var stringSearch = file.match(regex);

    if(stringSearch != null){
        console.log(`Cheat found, string name: ${stringSearch}`);
    } else {
        console.log('Cheat not found');
    }
}


console.timeEnd('program');

您可以找到代码here

您需要对字符串进行逐字转义以在正则表达式中使用。不幸的是,似乎没有内置方法可以做到这一点,但是有可用的 npm 包,比如这个:https://www.npmjs.com/package/escape-string-regexp