2013-05-02 53 views
0

我需要驗證網址,這應該是像正則表達式爲有效的URL

google.com or 
yahoo.co.uk etc 

我的意思是我不要求HTTP或www。 我的正則表達式代碼是這樣的,但它不適合我。

/^[a-zA-Z0-9][a-zA-Z0-9-][a-zA-Z0-9]\.[a-zA-Z]{2,}$/ 
+0

我normaly使用REG-EX,需要3個字符,一個點,然後ATLEAST 3個新角色。可能對你有用 – DiederikEEn 2013-05-02 11:57:09

+1

請檢查這個問題,根據你的需要,它有不同的URL驗證器:http://stackoverflow.com/questions/161738/what-is-the-best-regular-expression-to-check-if -a-字符串是一個有效的URL – 2013-05-02 11:57:17

+0

@DiederikEEn u能顯示它PLS – Techy 2013-05-02 11:58:59

回答

1

您當前的正則表達式不會在.正好前三個字符工作,因爲它預期字符匹配[a-zA-Z0-9]。您的正則表達式只允許在輸入中的任意位置輸入一個.

對於可變長度字符串,您需要使用+*{}語法,就像您對正則表達式的最後部分所做的一樣。

基本上保持你似乎被拍攝的,但有它不同長度的工作相同的驗證,請嘗試:

/^[A-Z\d-]+(\.[A-Z\d-]+)*\.[A-Z]{2,}$/i 

即:

[A-Z\d-]+匹配一個或多個字母,數字或連字符,後面跟着一個點,接着通過一個或多個這些字符的

(\.[A-Z\d-]+)*零個或多個實例中,隨後

\.[A-Z]{2,}帶有兩個或更多A-Z的最終點。

請注意,如果您將i標誌添加到正則表達式以使其不區分大小寫,您可以僅使用大寫A-Z範圍。

+0

當我鍵入stackoverflow.com時,它顯示錯誤 – Techy 2013-05-02 12:21:27

+0

它適用於我這裏: http://jsfiddle.net/6yJQy/ – nnnnnn 2013-05-02 12:25:53

0

試試這個:第一個字符匹配[a-zA-Z0-9],然後匹配[a-zA-Z0-9-]一個字符,然後一個:

(?:[-A-Za-z0-9]+\.)+[A-Za-z]{2,6} 
+0

它不工作夥計 – Techy 2013-05-02 12:01:55

+0

你使用什麼URI?檢查http://regexpal.com/ - 工作正常。 – sebastian 2013-05-02 12:04:52

+0

當我插入空格時,它不會指出錯誤。 – Techy 2013-05-02 12:06:51

1

您的原始圖案只允許具有第一部分不啓動或以短劃線結尾的網址。如果這很重要,我已經爲你做了一個模式。

/^(?:(?!-)[a-z\d-]+[^-]\.)+[a-z]{2,6}$/i 

此修復NNNNN在他的回答解決同樣的問題,但它也不允許URL中的任何一部分啓動或連字符結束。

我也可以推薦regexpal來實時測試匹配。它使用JavaScript風格的正則表達式匹配。

將正則表達式置於頂部字段中,並將測試數據置於底部。您將需要刪除封裝它的斜槓。檢查 「不區分大小寫(一)」 和 「^ $匹配在換行符(M)」

一些測試數據框:

google.com
yahoo-.com
WWW。 YAHOO.co.uk
-yahoo.co.uk
http://www.regular-expressions.info/
hey.subdomain.sub.sub.domain。COM
co.uk

現在,兩者的區別^ $與否將證明自己。你會看到一些網址不匹配,即使它們是有效的。多行(m)標誌允許您將輸入中的每一行視爲單獨的字符串。如果整個字符串匹配,我給你的正則表達式只會匹配,但即使如此,一些URL也是有效的。不區分大小寫(i)等於正則表達式末尾的「i」。

嘗試刪除錨線(^)和行($)結束的開始,看看如何匹配。

我不知道你是如何運行你的比賽,但是這是值得考慮的。