当前位置:首页 > 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 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现论坛

js实现论坛

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

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…