2013-03-22 191 views
1

我需要一個正則表達式驗證網址:C#:正則表達式驗證網址

這應該是有效

http://www.google.com 

https://www.google.com 

但不是這樣的:

google.com 

www.google.com 

我知道這可以用Uri.IsWellFormedUriString完成例如,但我需要一個正則表達式。發現了幾個類似的話題,但不適合我的情況。謝謝!

+11

'我知道這可以用Uri.IsWellFormedUriString來完成,例如,但我需要一個regex'。請問爲什麼你需要一個正則表達式?因爲每當我聽到有人需要正則表達式時,智者的話語在我耳中迴盪:「有些人在遇到問題時想」我知道,我會用正則表達式「。現在他們有兩個問題。 – 2013-03-22 09:35:57

+2

參見[this](https://www.google.com.tr/search?q=url+regex+site%3Astackoverflow.com&aq=f&oq=url+regex+site%3Astackoverflow.com&aqs=chrome.0.57.6199&sourceid= chrome&ie = UTF-8&safe = active)請... – Alpay 2013-03-22 09:38:38

+0

由於邏輯已經使用正則表達式來驗證不同類型的輸入數據,但它不會將www.google.com和goodgle.com視爲無效的URL。改變它與Uri.IsWellFormedUriString一起工作將需要一些重構,現在我只需修復註冊表項ex。 – Mdb 2013-03-22 09:48:04

回答

1
(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])? 
1

試試這個

Regex urlchk = new Regex(@"((file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp)://)+(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,15})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(/[a-zA-Z0-9\&%_\./-~-]*)?", RegexOptions.Singleline | RegexOptions.IgnoreCase);