匹配不仅由某些字符组成的正则表达式模式

Match Regex Pattern which does not only consist of certain characters

我正在尝试匹配不只包含特定字符的特定大小的字符串。

第一部分相当简单。要匹配这个:
是:“abcde / asbas”
是:“abcde/asbas”
是:“abcde/ ///”
是:“///aasd”
是:“/// aasd”
是:“avcdesc”
否:“AVASD/ASDB”
我使用这个表达式:

[ \/a-z0-9]{1,20}

但这也会匹配这样的内容:" ////"
因为我想避免这种情况,所以我尝试添加另一个表达式并使用 Lookahead:

组合它们
(?=(?![ \/]+$))(?=[ \/a-z0-9]{1,20}).*$

这可以避免前面的例子 " ////"
但是不知何故,有效字符之后的所有字符都会被忽略,因此会发生以下行为:
匹配 "asdad988AAA" 这样的字符串。 正如所解释的,这不是故意的。也许有人知道如何解决这个问题。
谢谢。
正则表达式 101:https://regex101.com/r/nmSMMu/1

你可以使用

^(?=[ \/]*[a-z0-9])[a-z0-9\/ ]{1,20}$

参见regex demo详情:

  • ^ - 字符串开头
  • (?=[ \/]*[a-z0-9]) - 任何零个或多个空格或 / 个字符后必须有小写 ASCII 字母或数字
  • [a-z0-9\/ ]{1,20} - 一到二十个小写 ASCII 字母、数字、/ 或空格
  • $ - 字符串结尾。