var tomatch= /http:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{3}/
if (tomatch.test(theurl))
{
window.alert("URL OK.");
return true;
}
我尝试了这个正则表达式代码来验证网址。
当我尝试使用http://about.me验证它时显示错误
答案 0 :(得分:1)
将\.[A-Za-z]{3}
替换为\.[A-Za-z]{2,}
,因此它需要至少2个TLD字符,但也允许更多(例如.info
,.museum
等等!)
您还需要允许使用单字符域名。一些注册管理机构允许它们(例如DENIC / .de)!
答案 1 :(得分:1)
只需更改{3} tp {2,3}
即可var tomatch= /http:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{2,3}/
但是要意识到正则表达式是这样运作的:
http://test.meandmoretext
***************
RegEx匹配的*标记,即使您在匹配后有更多文本,它也会返回“URL OK”。如果你想要一个全字符串匹配
var tomatch= /^http:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{2,3}$/
答案 2 :(得分:1)
只是添加其他人已经说过的话:
在开头添加^
,在结尾添加$
,否则即使它只匹配部分字符串也会成功 - 如果你只测试部分输入,那么你'没有做适当的验证。
另一件事是允许HTTPS URL。
另外不要忘记可选端口。
路径!
查询字符串。
哈希部分。
也许你可以在没有基本身份验证用户和密码的情况下离开,但从技术上讲,它可以在那里。
验证网址太多比看起来更难。我甚至不会尝试自己编写正则表达式。可能try the Regex Library,搜索older questions here或Google:url validation javascript。
答案 3 :(得分:0)
正则表达式[A-Za-z]{3}
的最后一部分表示匹配所有字母{3}表示应该有3个字符。
将其更改为{2,}