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) 這種類型的分組不對正則表達式的處理產生任何影響,用於提供註釋讓人閱讀

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章