当前位置:首页 > JavaScript

js实现关键字过滤

2026-01-31 05:21:58JavaScript

实现关键字过滤的基本方法

使用正则表达式进行关键字匹配是最常见的方法。通过构建一个包含敏感词的正则表达式,可以对输入文本进行检测或替换。

const sensitiveWords = ['bad', 'forbidden', 'inappropriate'];
const regex = new RegExp(sensitiveWords.join('|'), 'gi');

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

优化匹配效率的方法

对于大量敏感词的情况,可以考虑使用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;
  }
}

处理变体字符的过滤

某些情况下需要处理变体字符或同义词,可以通过扩展敏感词列表或使用模糊匹配来实现。

const variantMap = {
  'a': ['@', '4'],
  'e': ['3'],
  'i': ['1', '!']
};

function expandVariants(word) {
  // 实现变体字符扩展逻辑
}

实现整词匹配而非部分匹配

确保只匹配完整单词而非部分字符,可以在正则表达式中添加单词边界匹配。

js实现关键字过滤

const regex = new RegExp('\\b(' + sensitiveWords.join('|') + ')\\b', 'gi');

前端实现的注意事项

在前端实现时需要考虑性能影响,特别是对长文本的处理。可以采用以下策略:

  • 对输入进行分块处理
  • 使用Web Worker进行后台过滤
  • 实现延迟过滤(如防抖处理)
// 使用防抖的过滤函数
let filterTimeout;
function debouncedFilter(text, callback) {
  clearTimeout(filterTimeout);
  filterTimeout = setTimeout(() => {
    callback(filterText(text));
  }, 300);
}

后端验证的必要性

尽管前端可以实现关键字过滤,但必须同时在后端进行验证。前端过滤容易被绕过,后端验证是确保数据安全的最后防线。

// Node.js后端过滤示例
app.post('/submit', (req, res) => {
  const filteredContent = filterText(req.body.content);
  if (filteredContent !== req.body.content) {
    return res.status(400).send('包含敏感内容');
  }
  // 处理合法内容
});

标签: 关键字js
分享给朋友:

相关文章

js实现图片轮播

js实现图片轮播

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

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现论坛

js实现论坛

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

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…