Javascript RegEx l33t语音识别器?

Javascript RegEx l33t语音识别器?,javascript,html,regex,user-input,Javascript,Html,Regex,User Input,我知道有人问过类似的问题,但这更具体 我有一个网站,需要用户输入,但需要过滤掉一些单词。例如,让我们使用example这个词。3可以代替e,4可以代替a,我可以很容易地根据具体情况构建一些东西,但是我不知道如何使用单词数据库来实现这一点 我有一个txt文件,它包含一个没有单词的列表,可以让它过滤它们,但是如果有人键入3x4mpl3,那么这将被排除在外 过滤器的代码为: async function isinapropriate(text) { const fileStream = fs.

我知道有人问过类似的问题,但这更具体

我有一个网站,需要用户输入,但需要过滤掉一些单词。例如,让我们使用example这个词。3可以代替e,4可以代替a,我可以很容易地根据具体情况构建一些东西,但是我不知道如何使用单词数据库来实现这一点

我有一个txt文件,它包含一个没有单词的列表,可以让它过滤它们,但是如果有人键入3x4mpl3,那么这将被排除在外

过滤器的代码为:

async function isinapropriate(text) {
    const fileStream = fs.createReadStream(__dirname + "/disabledwords.txt");
    const rl = readline.createInterface({
      input: fileStream,
      crlfDelay: Infinity
    });
    for await (const line of rl) {
      if (
        new RegExp("(^| )" + line + "($| )", "g").test(
          text
            .split(": ")
            .slice(1)
            .join(": ")
        )
      ) {
        console.log(text);
        console.log("Word: " + line);
        return true;
      }
    }
    return false;
  }
我如何才能得到它,使它能够识别ex4mple作为示例

而且,它区分大小写,所以如果数据库中有示例,示例仍然有效。有办法解决这个问题吗?还有最后一个问题(对不起),e x a m p l e也可以工作,我知道解决方案涉及
\s
或其他问题,但我找不到解决方法

编辑
我正在编写的应用程序是一个论坛/聊天室应用程序。唯一的用户输入是他们发布的内容,而不是尝试为白名单中的每个单词创建正则表达式,首先规范化输入单词:

函数正常化(inp){
常数leet={
“1”:“l”,
“3”:“e”,
“4”:“a”,
“5”:“s”,
“7”:“t”,
“0”:“o”
};
//摆脱利茨匹克
for(让num在leet中){
inp=inp.replaceAll(num,leet[num]);
}
//去掉外壳
inp=inp.toLowerCase();
//去掉非字母数字字符
inp=inp.替换(/\W/g,“”);
返回inp;
}
//所有“例子”
正常化(“3x4mpl3”);
标准化(“e x a m p l e”);
规范化(“示例”);

不要尝试为白名单中的每个单词创建正则表达式,而是首先规范化输入单词:

函数正常化(inp){
常数leet={
“1”:“l”,
“3”:“e”,
“4”:“a”,
“5”:“s”,
“7”:“t”,
“0”:“o”
};
//摆脱利茨匹克
for(让num在leet中){
inp=inp.replaceAll(num,leet[num]);
}
//去掉外壳
inp=inp.toLowerCase();
//去掉非字母数字字符
inp=inp.替换(/\W/g,“”);
返回inp;
}
//所有“例子”
正常化(“3x4mpl3”);
标准化(“e x a m p l e”);
规范化(“示例”);

审查制度永远是一种你可以以某种形式绕过的东西,455可能是屁股,但也可能是455。我不会相信任何不是一个静态的禁词列表的东西,也不会相信任何你可以以某种形式绕过的东西,455可能是屁股,但也可能是455。我不太相信那些不是静态禁止词列表的东西。你可以在替换列表中添加“
”@”:“a”
。没有nlp或类似的东西,你不可能涵盖所有案例,因此你必须在过度纠正或欠纠正之间做出选择。johnadoe.com-我的观点是,这些事情并不完美,也不可靠,但是这里有一些代表++这里有一个:
我在4:55有个约会
->
我在a:ss有个约会
lol@Aplet123请原谅我可能愚蠢的问题,因为我在regex和js方面都非常糟糕,但是有没有一种简单的方法来保存原始的帖子,所以如果原始帖子被认为是好的,你可以恢复到原来的帖子?我想变量可以工作,但我真的不确定您是否可以将其保存在某个变量中。您可以在替换列表中添加“
”@”:“a”
。没有nlp或类似的东西,你不可能涵盖所有案例,因此你必须在过度纠正或欠纠正之间做出选择。johnadoe.com-我的观点是,这些事情并不完美,也不可靠,但是这里有一些代表++这里有一个:
我在4:55有个约会
->
我在a:ss有个约会
lol@Aplet123请原谅我可能愚蠢的问题,因为我在regex和js方面都非常糟糕,但是有没有一种简单的方法来保存原始的帖子,所以如果原始帖子被认为是好的,你可以恢复到原来的帖子?我想变量会起作用,但我真的不确定你是否可以把它保存在变量中的某个地方。