码迷,mamicode.com
首页 > 其他好文 > 详细

前端实现敏感字过滤

时间:2017-11-28 16:43:02      阅读:572      评论:0      收藏:0      [点我收藏+]

标签:自动   return   bad   color   onclick   input   pattern   type   对比   

在开发聊天或者留言之类的功能的时候,通常需要过滤敏感词,下面总结了两种方法。

1、迭代敏感字数组,拼接过滤敏感字正则,然后利用 replace 把匹配到的敏感字替换为*

dom结构如下:

<textarea rows="5" cols="50" id="txt1">你家的狗呢,傻,傻比,儿,儿子</textarea>
<br>
<input type="button" value="点击生成过滤后的文字" onclick="showText()" />
<P>过滤后的文字:</P>
<textarea rows="5" cols="50" id="txt2"></textarea>

js代码如下:

// 过滤敏感字方法
function filterText(Text) {
    // 敏感字库
    var sensitiveWordsList = ["狗","儿子","草","傻比"];
    // 准备拼接的敏感字串
    var sensitiveWords = "";
    for(var i=0;i<sensitiveWordsList.length;i++){
        if(i<sensitiveWordsList.length-1){
            sensitiveWords += sensitiveWordsList[i]+"|";
        }else{
            sensitiveWords += sensitiveWordsList[i];
        }
        
    };
    // 拼接敏感字正则
    eval("var reBadWords = /"+sensitiveWords+"/gi;");
    // 替换敏感字
    var outText = Text.replace(reBadWords, "*");
    
    // confirm弹框
    if(outText!=Text){
        var r=confirm("你的留言中含有不恰当的词语,系统已自动为你修改,是否继续提交?");
        if(r==true){
            return outText;
        }else{
            return "";
        }
    }else{
        return outText;
    }
};

// 按钮点击方法
function showText() {
    var oInput1 = document.getElementById("txt1");
    var oInput2 = document.getElementById("txt2");
    oInput2.value = filterText(oInput1.value);
};

2、同样迭代敏感字数组,但是在迭代过程中匹配每一个敏感字,利用 replace 把匹配到的敏感字替换为*

dom结构如下:

<textarea rows="5" cols="50" id="txt1">你家的狗呢,傻,傻比,儿,儿子</textarea>
<br>
<input type="button" value="点击生成过滤后的文字" onclick="showText()" />
<P>过滤后的文字:</P>
<textarea rows="5" cols="50" id="txt2"></textarea>

js代码如下:

// 过滤敏感字方法
function filterText(Text) {
    // 敏感词库
    var sensitiveWordsList = ["狗","儿子","草","傻比"];
    // 过滤后的文字
    var outText = "";
    // 遍历敏感词库,替换为*,并把处理后的文字赋值给outText
    for(var i=0;i<sensitiveWordsList.length;i++){
        var pattern = new RegExp(sensitiveWordsList[i],"g");
        outText = Text.replace(pattern,"*");
        
    };
    // confirm弹框
    if(outText!=Text){
        var r=confirm("你的留言中含有不恰当的词语,系统已自动为你修改,是否继续提交?");
        if(r==true){
            return outText;
        }else{
            return "";
        }
    }else{
        return outText;
    }
    
};

// 按钮点击方法
function showText() {
    var oInput1 = document.getElementById("txt1");
    var oInput2 = document.getElementById("txt2");
    oInput2.value = filterText(oInput1.value);
};

对比两种方法,不难看出第二种方法要更好一点,因为第一种方法中有对字符串拼接的操作,更耗时一些。

如有表述不准确之处,欢迎指正,欢迎补充,感谢阅读。

前端实现敏感字过滤

标签:自动   return   bad   color   onclick   input   pattern   type   对比   

原文地址:http://www.cnblogs.com/wangzhenyu666/p/7910426.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!