正则表达式:允许 1-25 个字母或空格但不包括三字母值列表

RegEx: allow 1-25 letters or spaces but exclude three-letter-value-list

我是这个论坛的新手,希望有人能支持我。

我需要创建一个允许 1 到 25 个字母或空格但不允许值 EMP、NDB、POI 或 CWR 之一的 RegEx 模式。

我使用负前瞻尝试了以下方法:

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

但是这不能正常工作,该值(如 EMP)仍然被接受 - 参见 https://regex101.com/r/YfflBi/1

只有当我只有字母(没有空格)并且限制为 3 个时,这才有效:

((?!EMP|NDB|POI|CWR)[A-Za-z]{3})$

(参见 https://regex101.com/r/SzmuwP/1

然而,这里的挑战是我需要接受 1 到 25 个字母或空格,但不是我提到的三个字母值之一。

非常感谢大家思考解决方案!

您可以使用

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

参见regex demo详情:

  • ^ - 字符串开头
  • (?: - 非捕获组的开始:
    • (?!EMP|NDB|POI|CWR)[A-Za-z\s] - 不是负前瞻
    • 中定义的字符序列的起始字符的字母或空格
  • ){1,25} - 重复非捕获组内的模式序列 1 到 25 次
  • $ - 字符串结尾。