更新记录

1.0.0(2026-07-19)

首发:自研高性能原生多模式匹配核心,敏感词过滤提供 uni-app 可调的 JS 对象 API:建一次词库、反复过滤(filter 替换敏感词为 *、contains


平台兼容性

uni-app x(5.14)

Chrome Safari Android iOS 鸿蒙 微信小程序
5.0 12 × ×

nex-wordfilter —— 高性能敏感词过滤

自研高性能原生多模式匹配核心,实现敏感词过滤,提供 uni-app 可调的 JS 对象 API。 支持 App 端(Android / iOS)+ H5 端(全 API 可用);小程序不支持。

同一份 utssdk 插件同时支持 uni-app x(uvue)经典 uni-app(vue3),无需分叉。 WordFilter有状态对象——用一批敏感词构造一次(构建匹配自动机), 之后反复调用 filter / containsSensitive,别每次过滤都 new(构建自动机有成本)。 自研核心,无额外系统依赖。

API(对象型)

成员 签名 说明
构造 new WordFilter(keywords: string[]) 用敏感词数组构造过滤器(建一次、反复用)
方法 filter(text: string): string 把命中的敏感词替换为 *,返回过滤后文本
方法 containsSensitive(text: string): boolean 是否命中敏感词(用于快速拒绝发送)
  • 替换策略:每个命中的敏感词整体替换为一个 *(非逐字符;如 笨蛋*)。
  • 默认大小写敏感(词库 bad 不会过滤 BAD)。
  • 重叠/嵌套词(如词库含 YoutubeYou)按 Aho-Corasick 匹配语义处理(最左最早命中)。
  • 空文本原样返回;空词库则恒不命中(filter 原样返回、containsSensitivefalse)。
  • 中文 / Emoji 混排按字节安全处理,不会因 UTF-8 边界出错。

用法

import { WordFilter } from "@/uni_modules/nex-wordfilter";

// 1. 用敏感词构造一次(App 启动时建好,复用这个实例)
const filter = new WordFilter(["bad", "笨蛋", "VPN"]);

// 2. 反复使用
filter.filter("你这个笨蛋");        // "你这个*"
filter.containsSensitive("hello");  // false
filter.containsSensitive("有 VPN");  // true

平台与调试边界

  • App 端支持 app-android / app-ios;H5 端全 API 可用;各家小程序不支持。
  • Android 本地真机调试需 HBuilderX ≥ 4.26(自定义调试基座),云打包不受此限。
  • iOS 端含 Swift 组件,宿主原生工程需开启「支持 Swift」。
  • 最终 App 打包由 HBuilderX / @dcloudio CLI 完成。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据。所有计算/处理均在本地完成,无任何网络请求、不发送数据到任何服务器。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。