2012-01-04 93 views
0

我正在使用將檢查URL的JavaScript正則表達式。當URL可能包含或不包含HTTP和WWW時,URL爲URL的正則表達式

(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»「」‘’])) 

我用這個正則表達式發送消息給Twitter。會發生什麼事是確保URL包含WWW和/或HTTP。

但問題是如果URL是像Guaridan.com.uk Twitter認爲它是一個URL。

那麼我怎樣才能修改我的正則表達式,它不會檢查HTTP或WWW,這意味着如果它存在,那麼它不會產生任何影響。

因此,它會匹配像My.co.comdummyKin

+1

如果您使用jQuery,爲什麼不使用使用jQuery的URL驗證例程? – fge 2012-01-04 10:31:57

+0

@fge我不知道這件事。你能舉一些例子嗎 – Moons 2012-01-04 10:33:09

+0

請看這裏:http://docs.jquery.com/Plugins/Validation/Methods/url – fge 2012-01-04 10:37:02

回答

1

如果您只想匹配域名,您必須匹配幾乎任何字詞加「。」,「_」和「 - 」符號。 一種方法可能至少與根域(.com,.net,.us,.co.uk,.es,.fr等等)匹配,但該列表將是巨大的。你可能想匹配任何有點分隔的詞,而不是它肯定會是一個域,但你可以嘗試連接它。

此正則表達式:([\d\w]+?:\/\/)?([\w\d\.\-]+)(\.\w+)(:\d{1,5})?(\/\S*)?

將匹配:

  • 組1爲protocol://(可選)
  • 組2的concat組3作爲域
  • 組3是頂層域
  • 組4作爲端口(可選)
  • 組5作爲查詢(可選)
1

用於www和http URL格式的jQuery正則表達式。

接受WWW以及HTTP下面給定URL正則表達式:

var pattern = /(?:https?:\/\/)?(?:www\.)?(?:https?:\/\/)?(?:www\.)(?:https?:\/\/)?(?:www\.)?(\/\S*)?/; 

接受WWWHTTPabc.com下面給出正則表達式:

var pattern = ([\d\w]+?:\/\/)?([\w\d\.\-]+)(\.\w+)(:\d{1,5})?(\/\S*)? 
+4

歡迎來到SO!你能重新格式化你的答案,把正則表達式放到代碼中嗎?請重新檢查錯別字。 – Mateng 2012-11-12 05:15:39

+0

它需要你在哪裏使用這個正則表達式,只要把自己的代碼括號或分號。就像我添加這個正則表達式在我的jqueryvalidation.js作爲「url」:{ 「regex」:/(?: https?:\ \ /)(?: WWW \)(?: HTTPS:???\/\ /)(?: WWW \)(?: HTTPS:???\/\ /)(?: WWW \) ?(\/\ S *)?/ i, 「alertText」:「*無效的網址」 } – 2012-11-15 07:42:54

0

試試這個......

/^http:\/\/|(www\.)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/

它的工作人民正在想什麼。

它帶或不帶http://, https://,www

相關問題