2016-12-20 9 views
2

我試圖符合以下路線:正則表達式nginx的路線匹配

/{anything1}/{anything2}/file.{jpg|png}

其中anything1可以[a-z0-9](小寫字母和數字)和anything2可以[-a-z0-9](小寫字母,數字和短跑)。

我之所以不想把所有的文件匹配,像這樣:

location ~* (.+)\.(jpg|png)$

是,我需要在location塊可用$anything1$anything2變量,這樣我以後可以做一個重寫。

在此先感謝。

+1

您的問題是? –

+0

你只是列舉事實,沒有問題可以回答。 –

+1

問題是「我如何構造匹配'/ {anything1}/{anything2} /文件的正則表達式。{jpg | png}'route」 – Pono

回答

1

你可以使用像

^/[^/]+/[^/]+/[^/]+\.(?:jpg|png)$ 

正則表達式見regex demo

[^/]+比賽1+其他字符比/,從而可以在/分隔符不溢出並確保你只具有一定的匹配路徑子路徑的數量。請使用\.

(?:jpg|png)交替組匹配2個序列,這可jpgpng

如果你確實想只允許特定的字符(白名單方式),你將需要使用量詞(我想你需要+出現一次或多次)與你的性格類的任何部件:

^/[a-z0-9]+/[a-z0-9-]+/[^/]*\.(?:png|jpg)$