js正则表达式判断 是否为网站链接地址

如题 例如判断 网站链接格式是个正常的链接 https://weibo.com/ajaxlogin.php?framelogin=1&callback=parent

我用的这个正则表达式,判断简单的网站链接,例如:http://www.baidu.com是没问题的,但是判断上面那种带参数的就不行

代码:
if($("#url").val() != ""){
var url=document.getElementById("url").value;
var reg=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\/])+$/;
if(!reg.test(url)){
alert("这网址不是以http://或https://开头,或者不是网址!");
return;
}
}

你判断请求地址后面的参数是完全没意义的,对于一个参数可为空的请求来说下面的三种链接都是可以正常访问的
https://tieba.baidu.com/f?ie=utf-8&fr=search&kw=你好
https://tieba.baidu.com/f?ie=utf-8&fr=search&kw=
https://tieba.baidu.com/f?ie=utf-8&fr=search&kw

这三个地址只是举例,为百度贴吧的查询入口,kw为查询条件。你会发现三个请求都可访问。你可以写个条件查询接口试试,就知道了。所以对于网址判断你只需要判断请求头就好了

https{0,1)://{s}

去掉内容 和 后面参数判断就好了啊

/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(.)+$/

const regex = /^https?://([a-z0-9_-]+.)+([a-z0-9_-]+)/i;
/^https?://([\w-]+.)+([\w-]+)/i;
我使用这个正则,只要判断开头是否符合,没有判断参数,不过应该有漏洞,注意你自己的表达式的 '.' 需要加转义字符 ''