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

匹配URL模式的PHP正则表达式,php,regex,preg-match,Php,Regex,Preg Match,我正在尝试用PHP构建一个正则表达式,以便 /test/randomstring1/randomstring2匹配 /test/randomstring1/randomstring2/匹配 /test/randomstring1/randomstring2/randomstring3不匹配 我想出了一个好主意 /test\/(.+?)\/.*[^\/]/ 它适用于前两种情况,但第三种情况也适用。 有人能帮我找出我丢失的东西吗? 谢谢 注意,匹配除换行符以外的任何字符*将匹配尽可能多的字符,

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

  • /test/randomstring1/randomstring2
    匹配

  • /test/randomstring1/randomstring2/
    匹配

  • /test/randomstring1/randomstring2/randomstring3
    不匹配

我想出了一个好主意

/test\/(.+?)\/.*[^\/]/
它适用于前两种情况,但第三种情况也适用。 有人能帮我找出我丢失的东西吗?
谢谢

注意,
匹配除换行符以外的任何字符<代码>*将匹配尽可能多的字符,而不是换行字符

你可以用

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

详细信息

  • ^
    -字符串的开头
  • /test/
    -文字子字符串
  • ([^/]+)
    -第1组:除
    /
  • /
    -a
    /
    字符
  • ([^/]+)
    -第2组:除
    /
  • /?
    -可选的
    /
  • $
    -字符串结束
您需要
“~^/test/([^/]+)/([^/]+)/?$~”