You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查用户输入字符串中是否包含给定列表内的匹配词汇

Dart 违规词正则匹配实现方案

基础实现(子串匹配,忽略大小写)

只要输入文本包含违规词子串即判定命中,代码如下:

List<String> badWords = [
  "bad", 
  "damn",
  // 还包含其他各类违规词汇
];
String text = msgController.text;

// 遍历匹配实现
for (var badWord in badWords) {
  // 正则配置:caseSensitive设为false表示忽略大小写匹配
  RegExp matchReg = RegExp(badWord, caseSensitive: false);
  if (matchReg.hasMatch(text)) {
    print("匹配到违规词:$badWord");
    // 如需匹配到第一个就终止后续检测,放开下方注释
    // break;
  }
}

// 如果你偏好使用map写法,可参考如下实现
badWords.map((e) {
  RegExp matchReg = RegExp(e, caseSensitive: false);
  if (matchReg.hasMatch(text)) {
    print("匹配到违规词:$e");
  }
}).toList();

进阶场景优化

场景1:精确匹配整词,避免误判

如果不希望badminton这类包含违规词子串的正常词汇被误命中,可给正则添加单词边界规则:

// \b为正则单词边界标识符,需用raw字符串避免转义
RegExp matchReg = RegExp(r'\b' + badWord + r'\b', caseSensitive: false);

场景2:违规词包含正则特殊字符

如果违规词列表中存在. * + ?这类正则特殊字符,需要先转义再生成正则,避免匹配异常:

RegExp matchReg = RegExp(RegExp.escape(badWord), caseSensitive: false);

内容的提问来源于stack exchange,提问作者Brightcode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:30:00