我有一个用于URL重写的php类。我想路由这个网址:
- services-paris/
- services-paris/8/
- services/
公式为:services[ "-" + (city) ]? / [ (0-9) + "/" ]?
首先是[ "-" + (city) ]?
,意思是:是可选的+必须以“ - ”开头,但只返回城市。
第二件事是[ (0-9) + "/" ]?
,意思是:是可选的+只有数字+以“/”结尾但只返回数字。
第二件事是分页。
最后,我需要这些信息来了解城市和页面。
那么..模式是什么,我是正则表达式的新手。
谢谢!
答案 0 :(得分:1)
您可以使用此正则表达式:
services(?:-([^\/]+))?\/(?:(\d+)\/)?$
它会给你一张包含以下内容的匹配表:
请注意,您的城市名称不得包含任何' /'字符。
答案 1 :(得分:0)
您可以将此正则表达式用于CAShapeLayer
:
preg_match
RegEx分手:
'~\bservices(?:-([a-zA-Z. ]+))?(?:/(\d+))?/~'
PS:城市名称和页码将分别在捕获的组#1和#2中提供。
答案 2 :(得分:0)
这是一个带有细分的简单正则表达式
(\w+) # Capture 1 or more letters for 'services'
(?:- # Begin non capturing group with '-'
(\w+) # Capture 1 or more letters for city
)? # End non capturing group (optionally matched)
(?:\/ # Begin non capturing group with '/'
(\d+) # Capture 1 or more numbers for pagination
)? # End non capturing group (optionally matched)
您可以在行动here
中看到它