Js利用正則實現敏感詞過濾


[JS代碼]
    var msg = "CNM,SB,NMSL,MB,FUCK,hhhhh";
    console.log(filterWords(msg, "*")); //結果為*,*,*,*,*,hhhhh
    console.log(filterWords(msg, "#", { isEqual: true })); //結果為###,##,####,##,####,hhhhh

    //msg:所傳入需要過濾的字符串  replacedStr:指定的替換符號  options:是否等數量替換
    function filterWords(msg, replacedStr, options) {
      //定義一個對象用於存放初始的值
      var defaultOptions = {
        isEqual: false,
        keyWordList: ["CNM", "SB", "NMSL", "MB", "FUCK"], //敏感詞列表
      };

      //判斷options對象是否傳入了參數,如果傳入了就將所傳入參數中的屬性賦值給函數內自定義的屬性(覆蓋初始默認值)
      if (options) {
        for (var key in options) {
          defaultOptions[key] = options[key];
        }
      }

      //給初始值對象敏感詞列表中添加符號|並用於創建新的正則
      var rules = defaultOptions.keyWordList.join("|");
      var reg = new RegExp(rules, "ig");

      //替換
      msg = msg.replace(reg, function (text) {
        // 接收一個回調函數,根據回調函數的返回值決定替換的內容
        // text => 正則匹配匹配到的敏感詞
        console.log(text); //this依次指向reg中的字符串
        return defaultOptions.isEqual
          ? replacedStr.repeat(text.length) //str.repeat(n) => 將str重復n次
          : replacedStr;
        //如果isEqual:true => 用等長度的*號依次替換this所指向的字符串,否則直接全部替換為一個字符串
      });
      return msg;
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM