2011-11-25 51 views
0

我正在尋找一種乾淨的方式來編寫一個正則表達式來匹配網址爲,其URL域名爲www.mysite.com,只改變前綴和後綴。所以這個正則表達式必須匹配這些情況:如何檢查測試RegEx模式以完全匹配特定的URL域?

http://www.mysite.com/mycoolpage.html
http://www.mysite.com/mycoolpage.aspx?a_querystring=ABC123
http://www.mysite.com/mycoolpage.aspx?a_querystring=ABC123&another_querystring=ABC123
http://www.mysite.com/anothercoolpage.asp?a_querystring=ABC123
http://mysite.com/anothercoolpage.asp?a_querystring=ABC123

正則表達式必須處理任何文件:html, asp, aspx, etc。 另外,a_querystring可以是任何可能值:xyz=123, a=Boston, q=a%20big%20value

有沒有寫這個正則表達式,因此開發人員可以很容易地理解一個可讀的方式?

回答

1

如何:

~http://(?:.*\.)?mysite\.com\S*~ 

說明:

~   : regex delimiter 
http:// : literaly http:// 
(?:  : non capture group 
.*\.  : any number of any char followed by dot 
}?  : end of group optional 
mysite : literaly mysite 
\.  : a dot 
com  : literaly com 
\S*  : any number of non white spaces 
~   : regex delimiter 
+1

將匹配'的http:// www.thatsnotmysite.com' :)你需要添加一個\。之前mysite \ .com – SERPRO

+0

@SeRPRo:是的你說得對,回答編輯。 – Toto

0

grep http://[^\.]*\.mysite\..* *

的 「所有文件」 來自最終*。該模式本身表示「從http://開始,然後是任意數量的字符,它們不是字面的,,然後是字面點,然後是」mysite「和字面點,然後是任何東西。」

+0

這不會匹配'http:// www.subdomain.mysite.com' – Toto

+0

這不是一個必須匹配的測試。 – drysdam

1

此正則表達式將工作:

#http://(?:.*\.)*mysite\.com(?:/|$)*# 

Example