天天看點

nginx正則說明

^~     辨別符後面跟一個字元串。Nginx将在這個字元串比對後停止進行正規表達式的比對(location指令中正規表達式的比對的結果優先使用),如:location ^~ /images/,你希望對/images/這個目錄進行一些特别的操作,如增加expires頭,防盜鍊等,但是你又想把除了這個目錄的圖檔外的所有圖檔隻進行增加expires頭的操作,這個操作可能會用到另外一個location,例如:location ~* \.(gif|jpg|jpeg)$,這樣,如果有請求/images/1.jpg,nginx如何決定去進行哪個location中的操作呢?結果取決于辨別符^~,如果你這樣寫:location /images/,這樣nginx會将1.jpg比對到location ~* \.(gif|jpg|jpeg)$這個location中,這并不是你需要的結果,而增加了^~這個辨別符後,它在比對了/images/這個字元串後就停止搜尋其它帶正則的location。

=      表示精确的查找位址,如location = /它隻會比對uri為/的請求,如果請求為/index.html,将查找另外的location,而不會比對這個,當然可以寫兩個location,location = /和location /,這樣/index.html将比對到後者,如果你的站點對/的請求量較大,可以使用這個方法來加快請求的響應速度。

@      表示為一個location進行命名,即自定義一個location,這個location不能被外界所通路,隻能用于Nginx産生的子請求,主要為error_page和try_files。

~      為區分大小寫的比對。

~*     不區分大小寫的比對(比對firefox的正則同時比對FireFox)。

!~     不比對的

!~*    不比對的

.     比對除換行符以外的任意字元

\w     比對字母或數字或下劃線或漢字

\s     比對任意的空白符

\d     比對數字

\b     比對單詞的開始或結束

^     比對字元串的開始

$     比對字元串的結束

*     重複零次或更多次

+     重複一次或更多次

?     重複零次或一次

{n}     重複n次

{n,}     重複n次或更多次

{n,m}     重複n到m次

*?     重複任意次,但盡可能少重複

+?     重複1次或更多次,但盡可能少重複

??     重複0次或1次,但盡可能少重複

{n,m}?     重複n到m次,但盡可能少重複

{n,}?     重複n次以上,但盡可能少重複

\W     比對任意不是字母,數字,下劃線,漢字的字元

\S     比對任意不是空白符的字元

\D     比對任意非數字的字元

\B     比對不是單詞開頭或結束的位置

[^x]     比對除了x以外的任意字元

[^aeiou]     比對除了aeiou這幾個字母以外的任意字元

捕獲     (exp)     比對exp,并捕獲文本到自動命名的組裡

(?<name>exp)     比對exp,并捕獲文本到名稱為name的組裡,也可以寫成(?'name'exp)

(?:exp)     比對exp,不捕獲比對的文本,也不給此分組配置設定組号

零寬斷言     (?=exp)     比對exp前面的位置

(?<=exp)     比對exp後面的位置

(?!exp)     比對後面跟的不是exp的位置

(?<!exp)     比對前面不是exp的位置

注釋     (?#comment)     這種類型的分組不對正規表達式的處理産生任何影響,用于提供注釋讓人閱讀

本文轉自奔跑在路上部落格51CTO部落格,原文連結http://blog.51cto.com/qiangsh/1867780如需轉載請自行聯系原作者

qianghong000

繼續閱讀