2017-08-15 28 views
0

我需要一個過濾器開始www.我的子域將其重定向到同一子沒有www.正則表達式過濾子域以www

所以我需要在更然後3點來過濾URL的正則表達式域名並開始與www.

when HTTP_REQUEST { 

    if { [HTTP::uri] matches_regex "**?????????????**" } { 

     //* do Something 

    } else { 

     //* do something else 

    } 

} 

測試用例:

www.subdomain.domain.com應轉換爲subdomain.domain.com

我對正則表達式沒有任何經驗,所以如果有人有線索會有所幫助。

+0

請正確格式化您的代碼。每行代碼之前有4個空格,縮進是額外的4個空格。人們會傾向於不適當地格式化代碼。 –

回答

-1

您確定需要正則表達式來匹配嗎?

,你可以完成你想要使用正則表達式是什麼簡單的方法是:

^www\. 

^是錨定到字符串的開頭,\.被轉義點,因爲點在正則表達式意味着什麼,但換行符。

所以基本上這個正則表達式告訴你,匹配我www這就是對字符串的開頭,之後就出現了點字符。

你可以看到演示的位置:https://regex101.com/r/ZnVFaR/1

+0

這似乎不適用於我,因爲非子域也會受到影響。 –

1

我想這是你想要什麼:

^www(\.[^\/\?\n]*){3} 

測試here有一些投入。


說明

^www三個w開頭相匹配。

[^\/\?\n]*與除域名末尾標記之外的任何內容匹配(?也可能結束域名)。

(\.[^\/\?\n]*){3}匹配一個點,後面跟除域名末尾以外的任何地方,三次。這部分將確保你有一個子域(3個點數爲www.)。

+0

它看起來像現在使用的「www \。* \。* \ .. +」更復雜。現在對我來說有點abacadabra。我必須測試你的正則表達式是否適合我。 –

+0

如果您不想誤將子網域的url參數中的某個點誤認爲需要,則這是必需的。考慮一下'www.notasubdomain.com/test1.2 /'。 – pchaigno

+0

@EdwinHendriks有什麼你想要我詳細說明的,或者正則表達式無法正確處理的測試用例? – pchaigno