2011-03-17 46 views

回答

1

,以驗證它替換\.[A-Za-z]{3}\.[A-Za-z]{2,}所以它需要至少2個字符頂級域名,也可以讓更多的(還有如.info.museum,等等!)

您還需要允許單字符域名。有些註冊管理機構允許它們(例如DENIC/.de)!

1

只要改變{3} {TP 2,3}

var tomatch= /http:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{2,3}/ 

但是一定要明白,正則表達式的工作原理是這樣的:

http://test.meandmoretext 
*************** 

的*的標誌在正則表達式匹配了,所以即使比賽結束後你有更多的文字,它也會返回「URL OK」。如果你想全字符匹配

var tomatch= /^http:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{2,3}$/ 

但也意識到TLDs can go up to 6 characters

0

正則表達式的最後一部分[A-Za-z]{3}表示匹配所有字母{3}表示應該有3個字符。

將其更改爲{2,}

1

只需添加到別人已經說過:

末添加^在開始和$或否則,如果它只是你的字符串的一部分匹配它甚至會成功 - 如果你只測試了部分輸入,那麼你沒有做適當的驗證。

另一件事是允許HTTPS網址。

另外不要忘記可選端口。

和路徑!

和一個查詢字符串。

和哈希部分。

也許你可以離開沒有基本的認證用戶和密碼,但技術上它可以在那裏。

驗證URL是很多比看起來更難。我甚至不會嘗試自己編寫正則表達式。也許try the Regex Library,搜索older questions here或Google:url validation javascript