当前位置:首页 > JavaScript

js实现敏感词过滤

2026-03-01 19:02:42JavaScript

敏感词过滤的实现方法

敏感词过滤是Web开发中常见的需求,可以通过多种方式在JavaScript中实现。以下是几种常用方法:

正则表达式匹配

使用正则表达式可以快速检测文本中是否包含敏感词。需要预先定义敏感词列表,并将其转换为正则表达式模式。

const sensitiveWords = ['badword1', 'badword2', 'badword3'];
const pattern = new RegExp(sensitiveWords.join('|'), 'gi');

function filterText(text) {
    return text.replace(pattern, '*');
}

字典树(Trie)算法

对于大量敏感词,字典树是更高效的解决方案。它通过树形结构存储敏感词,减少重复匹配。

class TrieNode {
    constructor() {
        this.children = {};
        this.isEnd = false;
    }
}

class Trie {
    constructor() {
        this.root = new TrieNode();
    }

    insert(word) {
        let node = this.root;
        for (const ch of word) {
            if (!node.children[ch]) {
                node.children[ch] = new TrieNode();
            }
            node = node.children[ch];
        }
        node.isEnd = true;
    }

    search(word) {
        let node = this.root;
        for (const ch of word) {
            if (!node.children[ch]) {
                return false;
            }
            node = node.children[ch];
        }
        return node.isEnd;
    }
}

function buildTrie(sensitiveWords) {
    const trie = new Trie();
    sensitiveWords.forEach(word => trie.insert(word));
    return trie;
}

基于哈希表的快速查找

对于中小型敏感词库,可以使用简单的哈希表实现快速查找。

const sensitiveWords = new Set(['badword1', 'badword2', 'badword3']);

function hasSensitiveWord(text) {
    const words = text.split(/\s+/);
    return words.some(word => sensitiveWords.has(word.toLowerCase()));
}

结合多种方法的混合实现

实际应用中,通常会结合多种方法以提高过滤效果和性能。

js实现敏感词过滤

function createWordFilter(sensitiveWords) {
    const trie = buildTrie(sensitiveWords);
    const regex = new RegExp(sensitiveWords.join('|'), 'gi');

    return {
        filter: function(text) {
            // 先用正则快速过滤
            let filtered = text.replace(regex, '*');

            // 对剩余内容进行更精确的Trie检查
            const words = filtered.split(/\s+/);
            return words.map(word => {
                return trie.search(word.toLowerCase()) ? '*' : word;
            }).join(' ');
        }
    };
}

性能优化建议

  • 敏感词列表应该预先加载并缓存,避免每次过滤都重新构建
  • 对于大规模文本,可以考虑分批处理
  • 使用Web Worker处理大量文本,避免阻塞主线程
  • 定期更新敏感词库,保持过滤效果

以上方法可以根据实际需求选择或组合使用,平衡性能与准确性。对于特别严格的过滤需求,可能需要考虑服务端实现或专门的过滤服务。

标签: 敏感js
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…