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

如何编写允许1-25个字母/空格且排除指定3字母值的RegEx

问题原因

你写的正则失效核心有两个问题:

  1. 没有添加字符串起始锚点^,正则不会强制从输入的第一个字符开始匹配,遇到EMP这类禁用词时,会自动从第二个字符开始匹配剩余的MP内容,导致校验绕过。
  2. 负向前瞻的校验范围错误,原写法仅校验了匹配起始位置的字符序列,没有针对整个输入的完整匹配结果做禁用判断。

你之前写的固定长度为3的正则能正常运行,是因为长度限制刚好等于禁用词的长度,没有起始锚点也只能匹配整个输入串,负向前瞻刚好能覆盖完整校验逻辑,所以不会出现偏移绕过的问题。


解决方案

根据你的实际校验规则可以二选一:

场景1:仅禁止输入完全等于EMP/NDB/POI/CWR(包含禁用词作为子串的内容允许,比如EMPLOYEE、A NDB B都可通过)

^(?!(?:EMP|NDB|POI|CWR)$)[A-Za-z\s]{1,25}$

规则说明:

  • ^ 锚定输入起始位置,要求必须从第一个字符开始匹配
  • (?!(?:EMP|NDB|POI|CWR)$) 负向前瞻,直接排除整个输入刚好是四个禁用词之一的情况
  • [A-Za-z\s]{1,25} 匹配1到25个字母或空格
  • $ 锚定输入结束位置,要求匹配到最后一个字符为止

场景2:输入中完全不能出现EMP/NDB/POI/CWR子串(只要包含就禁止,比如EMPLOYEE、XPOIY都无法通过)

^(?!.*(?:EMP|NDB|POI|CWR))[A-Za-z\s]{1,25}$

规则说明:
和场景1唯一的区别是负向前瞻(?!.*(?:EMP|NDB|POI|CWR))会扫描整个输入的所有位置,只要任意位置出现禁用词就直接匹配失败。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:54:00