使用通配符验证 URI 路径的正则表达式

Regex to validate URI path with wildcard

我正在尝试使用星号单 (*) 或双星号 (**) 形式的通配符模式验证输入的 URI 路径。例如:/path1/*/path2//path1/path2/**/path3

我想出了正则表达式 ^(?:\/\w+\/?|\/\*\/?|\/\*\*\/?)+$,它匹配下面列表中的所有有效路径,除了:/foo*/foo** 并且不匹配无效的,除了一个 /foo//bar

你能否建议一个更好的正则表达式来涵盖所有情况,并且可能比我的更优化。

https://regex101.com/r/U65utY/1

正在考虑像这样的有效路径:

和无效路径,例如:

您可以使用

^(?:/(?:\*{1,2}|\w+\*{0,2}))+/?$

regex demo

详情

  • ^ - 字符串开头
  • (?:/(?:\*{1,2}|\w+\*{0,2}))+ - 出现一次或多次
    • / - 一个 / 字符
    • (?:\*{1,2}|\w+\*{0,2}) - 备选方案之一:
      • \*{1,2}| - 一两个星号,或
      • \w+\*{0,2} - 一个或多个单词字符,然后是零、一个或两个星号
  • /? - 一个可选的 /
  • $ - 字符串结尾。