我正在尝试匹配以下路线:
/{anything1}/{anything2}/file.{jpg|png}
其中anything1
可以是[a-z0-9]
(小写字母和数字),anything2
可以是[-a-z0-9]
(小写字母,数字和短划线)。
我不想匹配所有文件的原因如下:
location ~* (.+)\.(jpg|png)$
我需要在$anything1
块中提供$anything2
和location
个变量,以便稍后我可以重写。
提前致谢。
答案 0 :(得分:1)
您可以使用像
这样的正则表达式^/[^/]+/[^/]+/[^/]+\.(?:jpg|png)$
请参阅regex demo
[^/]+
匹配除/
以外的1个字符,因此不能在/
分隔符上溢出,并确保只匹配具有一定数量子路径的路径。
必须转义点,因此使用\.
。
(?:jpg|png)
是更改组,匹配2个序列,jpg
或png
。
如果您确实只想允许特定字符(白名单方法),则需要使用量词(我认为您需要+
,一次或多次出现< / em>)使用任何部分的角色类:
^/[a-z0-9]+/[a-z0-9-]+/[^/]*\.(?:png|jpg)$