PHP 匹配 URL 模式的正则表达式

PHP Regex to match a URL pattern

我正在尝试在 PHP 中构建一个正则表达式,以便

我想出了

/test\/(.+?)\/.*[^\/]/

它适用于前两种情况,但第三种情况也匹配。 有人可以帮我弄清楚我所缺少的东西吗? 谢谢!

请注意 . 匹配除换行符之外的任何字符。 .* 将匹配除换行符之外的尽可能多的字符。

您可以使用

preg_match('~^/test/([^/]+)/([^/]+)/?$~', $text, $matches)

regex demo

详情

  • ^ - 字符串开头
  • /test/ - 文字子串
  • ([^/]+) - 第 1 组:/
  • 以外的任何一个或多个字符
  • / - 一个 / 字符
  • ([^/]+) - 第 2 组:/
  • 以外的任何一个或多个字符
  • /? - 一个可选的 /
  • $ - 字符串结尾。