当前位置:首页 > 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()));
}

结合多种方法的混合实现

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

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实现敏感词过滤

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

相关文章

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounc…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 fun…