正则表达式匹配 MVC 先前 URL 约束的 URL 路径分数

Regex matches URL path fraction for MVC previous URL constraint

我正在寻找 URL 路径分数正则表达式模式。它应该匹配:

prefix/controller/action/
controller/action/
/controller/action/
/controller/action?param=val
/controller/action?param=val&param2=val
...

我想在 MVC 中先前 URL 的路由约束中使用它。

尝试以下模式,如果不是您所需要的,这至少应该是一个好的开始:

(?:prefix/|/)?controller/[a-z]+(?:/|(?:\?[a-z]+=[a-zA-Z0-9]+(?:&[a-z]+=[a-zA-Z0-9]+)*))

要点:

  • (?:prefix/|/)? – 可选(根据终端?)以prefix/ (根据|)开始只是/,我们选择不捕获(根据 ?:
  • controller/
  • [a-z]+ – 动作
  • (?:/|(?:\?[a-z]+=[a-zA-Z0-9]+(?:&[a-z]+=[a-zA-Z0-9]+)*)) – 以 / 结尾(根据 |? 后跟至少一个参数和值

它匹配您所有的示例输入:

prefix/controller/action/
controller/action/
/controller/action/
/controller/action?param=val
/controller/action?param=val&param2=val

您可以在 related RegexPlanet demo.

中进行测试