var tomatch= /http:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{3}/
if (tomatch.test(theurl))
{
window.alert("URL OK.");
return true;
}
我試過這個正則表達式代碼來驗證url。幫我驗證url甚至應該接受.me域名
當我試着使用http://about.me其示值誤差
var tomatch= /http:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{3}/
if (tomatch.test(theurl))
{
window.alert("URL OK.");
return true;
}
我試過這個正則表達式代碼來驗證url。幫我驗證url甚至應該接受.me域名
當我試着使用http://about.me其示值誤差
,以驗證它替換\.[A-Za-z]{3}
與\.[A-Za-z]{2,}
所以它需要至少2個字符頂級域名,也可以讓更多的(還有如.info
,.museum
,等等!)
您還需要允許單字符域名。有些註冊管理機構允許它們(例如DENIC/.de)!
只要改變{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}$/
正則表達式的最後一部分[A-Za-z]{3}
表示匹配所有字母{3}表示應該有3個字符。
將其更改爲{2,}
只需添加到別人已經說過:
末添加^
在開始和$
或否則,如果它只是你的字符串的一部分匹配它甚至會成功 - 如果你只測試了部分輸入,那麼你沒有做適當的驗證。
另一件事是允許HTTPS網址。
另外不要忘記可選端口。
和路徑!
和一個查詢字符串。
和哈希部分。
也許你可以離開沒有基本的認證用戶和密碼,但技術上它可以在那裏。
驗證URL是很多比看起來更難。我甚至不會嘗試自己編寫正則表達式。也許try the Regex Library,搜索older questions here或Google:url validation javascript。
什麼錯誤? – Gumbo 2011-03-17 07:47:39