当前位置:首页 > JavaScript

js实现敏感词过滤

2026-04-04 19:50:43JavaScript

敏感词过滤实现方法

基础字符串匹配法

使用字符串的 includesindexOf 方法检查文本是否包含敏感词。适用于简单场景。

const sensitiveWords = ['敏感词1', '敏感词2', '敏感词3'];
const text = '这是一段包含敏感词1的文本';

function checkSensitiveWords(text, words) {
  return words.some(word => text.includes(word));
}

console.log(checkSensitiveWords(text, sensitiveWords)); // true

正则表达式匹配法

使用正则表达式进行更灵活的匹配,支持模糊匹配和大小写忽略。

const sensitiveWords = ['敏感词1', '敏感词2', '敏感词3'];
const regex = new RegExp(sensitiveWords.join('|'), 'gi');

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

console.log(filterText('包含敏感词1和敏感词2的文本')); // 包含*和*的文本

字典树(Trie)优化法

对于大量敏感词,使用字典树结构提高匹配效率。

js实现敏感词过滤

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

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

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

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

function filterWithTrie(text, trie) {
  let result = [];
  let i = 0;
  const n = text.length;

  while (i < n) {
    let j = i;
    let node = trie.root;
    let lastMatch = -1;

    while (j < n && node.children[text[j]]) {
      node = node.children[text[j]];
      if (node.isEnd) lastMatch = j;
      j++;
    }

    if (lastMatch !== -1) {
      result.push('*'.repeat(lastMatch - i + 1));
      i = lastMatch + 1;
    } else {
      result.push(text[i]);
      i++;
    }
  }

  return result.join('');
}

const trie = buildTrie(['敏感词', '测试']);
console.log(filterWithTrie('这是一个敏感词测试', trie)); // 这是一个

性能优化建议

  1. 预处理敏感词字典,构建高效数据结构
  2. 对于长文本采用分块处理
  3. 考虑使用Web Worker避免阻塞主线程
  4. 对匹配结果进行缓存处理

注意事项

  1. 注意Unicode字符处理
  2. 考虑同音词、形近词等变体
  3. 处理边界情况如空字符串
  4. 考虑性能与准确性的平衡

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

相关文章

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <htm…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…

js实现文件夹

js实现文件夹

使用JavaScript创建文件夹 在浏览器端的JavaScript中无法直接操作文件系统创建文件夹,这是出于安全考虑。但在Node.js环境中可以通过文件系统模块(fs)实现。 Node.js中使…

js实现表单验证提交表单提交表单提交

js实现表单验证提交表单提交表单提交

表单验证与提交的实现 在JavaScript中实现表单验证并提交表单,可以通过监听表单的提交事件,进行验证后决定是否提交。以下是实现方法: 基础表单验证 通过监听表单的submit事件,阻止默认提交…