PHP 匹配 URL 模式的正则表达式
PHP Regex to match a URL pattern
我正在尝试在 PHP 中构建一个正则表达式,以便
/test/randomstring1/randomstring2
匹配
/test/randomstring1/randomstring2/
匹配
/test/randomstring1/randomstring2/randomstring3
不匹配
我想出了
/test\/(.+?)\/.*[^\/]/
它适用于前两种情况,但第三种情况也匹配。
有人可以帮我弄清楚我所缺少的东西吗?
谢谢!
请注意 .
匹配除换行符之外的任何字符。 .*
将匹配除换行符之外的尽可能多的字符。
您可以使用
preg_match('~^/test/([^/]+)/([^/]+)/?$~', $text, $matches)
详情
^
- 字符串开头
/test/
- 文字子串
([^/]+)
- 第 1 组:/
以外的任何一个或多个字符
/
- 一个 /
字符
([^/]+)
- 第 2 组:/
以外的任何一个或多个字符
/?
- 一个可选的 /
$
- 字符串结尾。
我正在尝试在 PHP 中构建一个正则表达式,以便
/test/randomstring1/randomstring2
匹配/test/randomstring1/randomstring2/
匹配/test/randomstring1/randomstring2/randomstring3
不匹配
我想出了
/test\/(.+?)\/.*[^\/]/
它适用于前两种情况,但第三种情况也匹配。 有人可以帮我弄清楚我所缺少的东西吗? 谢谢!
请注意 .
匹配除换行符之外的任何字符。 .*
将匹配除换行符之外的尽可能多的字符。
您可以使用
preg_match('~^/test/([^/]+)/([^/]+)/?$~', $text, $matches)
详情
^
- 字符串开头/test/
- 文字子串([^/]+)
- 第 1 组:/
以外的任何一个或多个字符
/
- 一个/
字符([^/]+)
- 第 2 组:/
以外的任何一个或多个字符
/?
- 一个可选的/
$
- 字符串结尾。