繁体   English   中英

Javascript +正则表达式无效单词过滤器,可忽略单词中的空格和其他字符

[英]Javascript + regex badword filter that ignores whitespace and other characters within the word

好吧,我以为这很简单,但是在将某些PHP regex代码转换为javascript时遇到了问题。

这是我的JS代码:

for(var i=0; i < badwords.length; i++) {
    var badword = badwords[i].slice(0, -2);
    var regex = "/(";

    for(var j=0; j < badword.length; j++) {
        regex += "[" + badword[j].toLowerCase() + "|" + badword[j].toUpperCase() + "][/W]*";
    }
    regex += ")/";

    msg = msg.replace(new RegExp(regex, "g"), "");
}

我没有找到比赛,也没有替代发生。 相同的代码结构和regex格式在PHP应用程序中起作用。

任何帮助表示赞赏,谢谢。

如果输入为foo ,则正则表达式应为/f[^az]*o[^az]*o/ig 您可以使用字符串和正则表达式来构建此正则表达式,如下所示:

var message = 'this string should not contain "foo", "b a r", "b.l.a.h" and "b_a_z". Baaz is acceptable.';
var badwords = ["foo", "bar", "blah", "baz"];
for (var i = 0; i < badwords.length; i++) {
    var pat = badwords[i].slice(0, -1).replace(/([a-z])/g, "$1[^a-z]*") + badwords[i].slice(-1);
    var rxp = new RegExp(pat, "ig");
    message = message.replace(rxp, "****");
}
message;
// output:
// this string should not contain "****", "****", "****" and "****". Baaz is acceptable.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM