js敏感词检测、替换、过滤

2 篇文章 0 订阅

一、检测是否存在敏感词

效果:输入一个字符串,检测该字符串是否存在敏感词,返回Boolean。

// 敏感词数组
const sensitiveWordsArray = ['你妹的','你大爷','傻'];
/**
     * 检测方法
     * @param {String} str 检测的字符
     * @return {Boolean} 是否存在敏感词
     * */ 
    function filtion(str) {
        for (let i = 0; i < sensitiveWordsArray.length; i++) {
            for (let j = 0; j <= str.length - sensitiveWordsArray[i].length; j++) {
                //根据敏感字符个数截取str的字符进行判断
                if (sensitiveWordsArray[i] == str.slice(j, j + sensitiveWordsArray[i].length)) {
                    return true
                }
            }
        }
       return false
   }
   

调用filtion示例

let test_01 = flition('你大爷');
 console.log(test_01); // true

二、检测到后输入指定字符替换该敏感词

效果:输入一个字符串和替换字符,检测该字符串是否存在敏感词,存在则用替换词替换掉敏感词,返回新的字符串。

/**
     * 替换
     * @param {String} str 检测的字符
     * @param {String} char 替换的字符
     * @return {String} 替换后的文字
    */
    function replace(str, char) {
        //str: 需要进行替换的字符串
        //char: 需要替换的字符
        //遍历敏感词库
        for (let i = 0; i < sensitiveWordsArray.length; i++) {
            for (let j = 0; j <= str.length - sensitiveWordsArray[i].length; j++) {
                //根据敏感字符个数截取str的字符进行判断
                if (sensitiveWordsArray[i] == str.slice(j, j + sensitiveWordsArray[i].length)) {
                    let c = "";
                    for (let k = 0; k < sensitiveWordsArray[i].length; k++) {
                        c += char;
                    }
                    str = str.slice(0, j) + c + str.slice(j + sensitiveWordsArray[i].length);
                }
            }
        }
        return str;
    }

调用replace示例

let test_02 = replace('你怎么能这样,去你大爷的','*');
console.log(test_02); // 你怎么能这样,去***的

全部代码

    const sensitiveWordsArray = ['你妹的','你大爷','傻'];
    /**
     * 检测
     * @param {String} str 检测的字符
     * @return {Boolean} 是否存在敏感词
     * */ 
    function flition(str) {
        for (let i = 0; i < sensitiveWordsArray.length; i++) {
            for (let j = 0; j <= str.length - sensitiveWordsArray[i].length; j++) {
                //根据敏感字符个数截取str的字符进行判断
                if (sensitiveWordsArray[i] == str.slice(j, j + sensitiveWordsArray[i].length)) {
                    return true
                }
            }
        }
        return false
    }


    /**
     * 替换
     * @param {String} str 检测的字符
     * @param {String} char 替换的字符
     * @return {String} 替换后的文字
    */
    function replace(str, char) {
        //str: 需要进行替换的字符串
        //char: 需要替换的字符
        //遍历敏感词库
        for (let i = 0; i < sensitiveWordsArray.length; i++) {
            for (let j = 0; j <= str.length - sensitiveWordsArray[i].length; j++) {
                //根据敏感字符个数截取str的字符进行判断
                if (sensitiveWordsArray[i] == str.slice(j, j + sensitiveWordsArray[i].length)) {
                    let c = "";
                    for (let k = 0; k < sensitiveWordsArray[i].length; k++) {
                        c += char;
                    }
                    str = str.slice(0, j) + c + str.slice(j + sensitiveWordsArray[i].length);
                }
            }
        }
        return str;
    }

    let test_01 = flition('你大爷');
    console.log(test_01); // true

    let test_02 = replace('你怎么能这样,去你大爷的','*');
    console.log(test_02); // 你怎么能这样,去***的

第三方库的使用

很多人因为找不到更多的敏感词,自己一个个添加敏感词的写又太麻烦,所以我在去年去网站爬了一点敏感词下来,敏感词类包括了 f罪、z治、b力、s情、x腥、r骂等。因考虑到词库记录不完整,为了方便使用者后续自行添加,打算不进行压缩。
该npm

安装插件(该插件是我本人写的,并上传至npm的,放心使用)

npm i verification-sensitive

使用方式

/ 导入敏感词过滤方法
import {replace,filtion} from "verification-sensitive";

// 使用replace 返回值为 字符串(被替换后的字符串)
let str = replace("检索词","替换字符");

// 使用 返回值为 Boolean类型(true含有敏感词,false无敏感词)
let flag = filtion("检索词");

另外,要是有更好的词库或方法,可以@我一下

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值