我一直在尝试创建一个正则表达式来匹配 URL 路径的某个部分,但不可否认的是,我以前的正则表达式经验很少,并且在阅读了几个小时的各种正则表达式教程后,我似乎陷入了困境。此时我的错误可能非常简单,但我什至不确定要搜索什么以及我需要什么类型的正则表达式运算符(我查看了一大堆其他问题,虽然有些问题相似,但我没有找不到完全匹配)。
我必须匹配下面的任何 URL 路径:
/服务
/服务/
/服务/页面/2
/服务/页面/140/
但它不应与以下任何一项匹配:
/服务/页面
/servicesx/页面
/服务/
页面 /服务/页面/
/服务/页面
/服务/页面/2/
/服务/foo
/服务/foo/页面
我需要匹配斜杠 / 后跟“服务”,可选地后跟斜杠,然后精确地跟随页面和斜杠以及任意数量的数字和可选的尾部斜杠,或者如果不精确跟随,则不应跟随任何其他内容。
“page”后面应该始终有数字,否则“service”后面没有数字的“page”也是无效的,“services”后面不能有任何其他内容。
我一直在使用这个工具进行实验: https: //regex101.com/
到目前为止,我已经想出了这个正则表达式,它不起作用,因为它仍然匹配太多(它匹配“/services/”)。
\/\bservices\b\/?(?:page\/[0-9]+)?\/?
如果重要的话,我需要在 PHP 中使用正则表达式。
千万里不及你