这些js代码在过滤词的时候会出现一个错误的行为比如过滤管理器在过滤的时候会将每个词分开来单独过滤function filterStringstr filter 将 filter 转换为正则表达式 var regex = new RegExpfilter g; 使用 replace 方法替换匹配的字符为空字符串 return strreplaceregex ;var input = a
这段代码在过滤词的时候会将每个词分开来单独过滤。原因在于在构造正则表达式时,将blackWord用[]包围起来,这会将其中的每个字符都视为一个独立的匹配项。解决这个问题的方法是修改构造正则表达式的方式,将blackWord作为一个整体来匹配而不是将其拆分成单个字符。以下是修改后的代码:
function filterString(str, filter) {
// 将 filter 转换为正则表达式
var regex = new RegExp(filter, "g");
// 使用 replace 方法替换匹配的字符为空字符串
return str.replace(regex, "");
}
var input = automaRefData("variables", "html");
var blackWord = automaRefData("variables", "blackWord");
notify("warning", `HTML去除:${blackWord}`);
var filter = blackWord.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
var output = filterString(input, filter);
//console.log(output); // 输出: "Hello, World!"
automaSetVariable("html", output);
automaNextBlock();
在这里,我们使用replace方法将blackWord中的特殊字符进行转义,然后将转义后的字符串作为整体构造正则表达式。这样就能正确地将整个词作为一个匹配项来进行过滤
原文地址: http://www.cveoy.top/t/topic/iYtp 著作权归作者所有。请勿转载和采集!