zoukankan      html  css  js  c++  java
  • 前端实现敏感字过滤

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

    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、迭代敏感字数组,将输入内容中的敏感字替换为“*”

     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");
            if(i == 0){
                outText = Text.replace(pattern,"*");
            }else{
                outText = outText.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);
    };

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

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

  • 相关阅读:
    范例-项目-.NET-PetShop-4.0-架构设计:目录、PetShop概述
    汉语-词语:立志
    汉语-汉字:被
    汉语-成语:被褐怀珠
    汉语-成语:被褐怀玉
    汉语-成语:被褐藏辉
    汉语-词语:处世
    使用exp&imp工具进行数据库备份及恢复
    oracle创建表空间-用户-角色-授权
    linux下单独安装oracle12.1客户端
  • 原文地址:https://www.cnblogs.com/wangzhenyu666/p/7910426.html
Copyright © 2011-2022 走看看