![](/img/trans.png)
[英]Using javascript/jquery, validate URL that should have http or https and www
[英]validate URL in form http://www.test.com
我想验证URL(使用Java脚本)以仅接受格式-http: //www.test.com 。 我正在尝试遵循以下代码,但它也接受test.com和http://www.test.com.com 。
var URLReg = new RegExp();
URLReg.compile("^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$");
if (!URLReg.test(form["URL"].value)) {
alert("You must supply a valid URL.");
return false;
}
这有什么问题? :(
提前致谢。
如果您想部分坚持自己的代码,可以使用以下方法快速解决:
"^((https?\\\\://www\\\\.)|(www\\\\.))[A-Za-z0-9_\\\\-]+\\\\.[A-Za-z0-9_\\\\-\\\\%\\\\&\\\\?\\\\.\\\\=\\\\+]+$"
(接受“ http:// www ....”和“ www ...”)
要么
"^(https?\\\\://www\\\\.)[A-Za-z0-9_\\\\-]+\\\\.[A-Za-z0-9_\\\\-\\\\%\\\\&\\\\?\\\\.\\\\=\\\\+]+$"
(仅接受“ http:// www ....”,不接受“ www ...”)
以上两个都不接受没有“ www”的域名。
无论如何,您的代码(以及我在上面放置的调整后的代码)都是错误的,因为它们都将验证如下所示的正常域:
您的正则表达式也将接受以下废话:
要仅验证域部分 ( 强制输入www ),可以使用以下命令:
var URLReg = /^((https?\://wwww\.)|(www\.))([a-z0-9]([a-z0-9]|(\-[a-z0-9]))*\.)+[a-z]+$/i;
这不会验证像这样的废话:
顺便说一句:它也可以验证http://www.domain.com.com,但这不是错误,因为子域url可能类似于: http : //www.subdomain.domain.com ,它是有效的! 而且几乎没有方法(或至少没有操作上简便的方法)使用正则表达式来验证正确的域tld ,因为您必须将所有可能的域 tld逐一 内联地写入正则表达式中,如下所示:
var URLReg = /^((https?\://wwww\.)|(www\.))([a-z0-9]([a-z0-9]|(\-[a-z0-9]))*\.)+(com|it|net|uk|de)$/i;
(例如,最后一个仅验证以.com / .net / .de / .it / .co.uk结尾的域)新tld 总是会出现 ,因此您必须对正则表达式进行调整,以使新tld出现,真奇怪!
为了也验证URL的其余部分,您可以在regex的末尾添加restig部分:
var URLReg = /^((https?\\://wwww\\.)|(www\\.))([a-z0-9]([a-z0-9]|(\\-[a-z0-9]))*\\.)+[az]+(\\/[a-z0-9_\\-\\%\\&\\?\\.\\=\\+]*)*$/i
;
它仍然不是完美的,因为有人可能进入:
可以验证,但是现在我很累,对不起! :)
我使用此表达-我发现的最好的表达:
^(https?://)?(([\w!~*'().&=+$%-]+: )?[\w!~*'().&=+$%-]+@)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([\w!~*'()-]+\.)*
([\w^-][\w-]{0,61})?[\w]\.[a-z]{2,6})(:[0-9]{1,4})?((/*)|(/+[\w!~*'().;?:
@&=+$,%#-]+)+/*)$
看看
^[A-Za-z]+:\/\/[A-Za-z0-9-/]+\.com$
是你想要的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.