当前位置:首页 > 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树(字典树)数据结构来优化匹配效率。这种方法特别适合需要处理成千上万个敏感词的场景。

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) {
  // 实现变体字符扩展逻辑
}

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

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

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);
}

后端验证的必要性

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

js实现关键字过滤

// 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实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…