2011-08-01 286 views
-3

的用戶應該能夠把它寫在以下的任何格式正則表達式開頭的網址HTTP/HTTPS或www

http://www.microsoft.comhttps://www.microsoft.com 或 www.microsoft.com

編程語言:C#

+0

誰說子域必須是'www'?你試過什麼了?你使用什麼編程語言? –

+0

(http + https + )E * .E * .E *與語言不可知的正則表達式符號...可以用www替換第一個E * E是URL的所有合法符號的集合。 – Patrick87

+0

我正在使用asp.net,我需要驗證在文本框中輸入的URL –

回答

5

這應該對大多數正則表達式處理器工作:

/((?:https?\:\/\/|www\.)(?:[-a-z0-9]+\.)*[-a-z0-9]+.*)/i 

這是什麼比賽:

  • 凡是與http://開始,https://,或www.
  • 後面至少一個或多個有效域字符(az,0-9,或 - )
  • 不匹配情況下的靈敏度(/i
  • 執行空白空間,所以它會匹配此:blahwww.domain.com,並返回www.domain.com如果要強制執行空間,請將\s添加到開頭,但必須確保在要匹配的字符串的開頭添加一個空格。

(?:)塊是不匹配的組。他們阻止爲這些特定的字符組分配一個數字。如果您的正則表達式處理器有問題,可以用匹配組()替換它們。組1始終是整個網址。

這不是非常嚴格,但它匹配所有標準域名(但可能會讓一些無效的域名滑過)。

另外,下次您可能希望包含編程語言或上下文,因爲正則表達式處理器在功能支持方面差別很大。

+0

嗨過度熱情, 我試過www.microsoft.com。它不起作用。 –

+0

我剛試過,它確實有效。我不知道還有什麼要告訴你,你的問題非常模糊,你的評論也是如此。 – OverZealous

+1

問題可能出在JavaScript中使用的分隔斜線上,而不是.NET正則表達式中。不過,我同意OP的模糊性。您可能還想將錨定添加到您的正則表達式中。並刪除不必要的反斜槓。 –

0

不使用http | https | fts

Var url = /^((www|WWW)\.){1}?([a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+(\.[a-zA-Z0-9]+)*)$/; 

使用http | https | fts

var url = /^((http|ftp|https):\/\/|((www|WWW)\.)){1}?([a-zA-Z0-9]+(\.[a-zA-Z0- 9]+)+(\.[a-zA-Z0-9]+)*)$/;