当斜杠 ( / ) 后跟下划线 ( _ ) 或连字符 ( - ) 时不匹配

Unmatch when Slash( / ) is followed by Underscore( _ ) or hyphen( - )

我正在Javascript中构建一个ID,它不允许特殊字符和大写字母。我们可以在 ID 中包含 / _ -,但它不应该以这些开头。

我有以下 regEx 几乎可以处理所有情况,但是有一种情况,如果存在斜杠 (/),则不应在其后跟连字符 (-) 或下划线 (_),我无法做到这一点解决

^(?=.{1,50}$)(([a-z0-9])+([-_/a-z0-9])*)$

如有任何帮助,我们将不胜感激。

您可以使用

^(?=.{1,50}$)[a-z0-9]+(?:[-_\/][a-z0-9]+)*[-_\/]?$

参见regex demo

详情:

  • ^ - 字符串开始
  • (?=.{1,50}$) - 字符串中只能有 1 到 50 个字符
  • [a-z0-9]+ - 一个或多个小写 ASCII 字母或数字
  • (?:[-_\/][a-z0-9]+)* - 零个或多个序列
    • [-_\/] - 一个 -_/ char
    • [a-z0-9]+ - 一个或多个小写 ASCII 字母或数字
  • [-_\/]? - 可选的 -_/ char
  • $ - 字符串结尾。