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

如何为表单用户名输入的禁词正则添加大小写敏感性?该方案是否最优?

问题解答

一、如何为正则添加大小写敏感性(或忽略大小写)

HTML的<input>标签的pattern属性默认区分大小写,也就是说你当前的正则只会拦截完全小写的swearword、racism、homophobic,如果输入SwearWord或RACISM这类混合/大写形式不会被拦截——如果你要的就是这种严格区分大小写的拦截逻辑,那当前代码已经满足需求。

如果你的实际需求是忽略大小写,拦截所有大小写形式的违规词(比如SwEarWoRd、RACISM都要被拦下),由于HTML的pattern不支持直接加/i修饰符,你可以用正则的内嵌不区分大小写标记(?i:...)来包裹每个违规词,修改后的代码如下:

<input pattern="^((?!(?i:swearword))(?!(?i:racism))(?!(?i:homophobic)).)*$" title="No bad words, please" />

二、这种排除违规词的方式是否为最优方案?

肯定不是,这种正则方案存在不少缺陷:

  • 易被绕过:用户只需在违规词中插入特殊字符(比如swe@rword、sw3arword)、空格(sw earword)就能轻松避开检测。
  • 维护成本高:违规词列表一旦变长,正则会变得无比臃肿,修改和新增词汇都很麻烦。
  • 性能隐患:多个负前瞻搭配通配符的组合,在输入较长文本时容易出现正则回溯,拖慢匹配速度。
  • 覆盖不全:无法处理违规词的变形、缩写、谐音等变体形式。

更优的替代方案

  • 前后端双重校验:前端校验仅作为用户体验优化,必须在后端再做一次校验——毕竟用户可以通过禁用JS等方式绕过前端限制。
  • 用违规词列表匹配:维护一个违规词列表,先对用户输入做预处理(比如转小写、替换特殊字符为对应字母,把@换成a、3换成e),再检查输入是否包含列表中的词汇。
  • 使用成熟的内容审核工具:借助专门的脏话过滤库或服务,这类工具通常已经处理了大小写、变体、谐音等各种场景,比自己写正则靠谱得多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:35:48