我怎么可以使用正则表达式验证URL在JavaScript(how can i validate a

2019-07-17 23:34发布

我想验证一个文本框,谁具有一定的url值,如博客地址或网站ADRESS我如何验证这个文本框的JS

Answer 1:

我想,你知道如何获得的值<input>用JavaScript。 所以,你的问题是编写特定功能的验证URL。

首先,我们可能会考虑检查该URL语法正确

一些例子,我们的网址验证一定要考虑OK:

http://www.example.com.
http://www.google.ee/search?q=foo&sourceid=opera&ie=utf-8&oe=utf-8
https://ama-z-on.co.uk/index.html?a=hei%20hoo
ftp://ftp.linux.ee/public/gentoo/i386/portage-snapshot.tar.bz
http://he.wikipedia.org/wiki/שטרגליים#.D7.A8.D7.90.D7.95_.D7.92.D7.9D
sftp://123.1.255.128:80/pub

而这只是真正的各种各样的URL-S可能一小部分。 和HTTP和FTP不是唯一的协议可能URL。 哦,那个URL验证是真的很难。

但是让我们假设一个有效的网址应该以一些字母开始,然后“://”,之后什么都。 为了测试一种模式,你会使用一个正则表达式,在JavaScript看起来像这样:

function validateUrl(url) {
  return /^[a-z]+:\/\//i.test(url);
}

正则表达式是一个整体的大的话题,那你应该考虑自己的学习,但只是在这里简要说明:

  • / -正则表达式的开始
  • ^ -字符串的开头匹配
  • [az] -匹配任一A,B,C,...,X,Y,或Z。
  • + -意味着先前的图案可以重复一次或多次。
  • : -匹配的冒号本身。
  • \/ -匹配正斜杠/ (不带反斜杠的JavaScript会认为这是正则表达式的结束)。
  • / -结束该正则表达式。
  • i -这是一个改进剂,使此正则表达式不区分大小写的。
  • .test(url) -调用test与正则表达式对象的方法url作为参数。 当参数的正则表达式匹配,则返回true ,否则false

此外,您可能要允许没有进入一个URL http://部分-这意味着你真的需要验证域名或IP地址,或任何其后面。

我猜你是很困惑现在,这是故意的。 你真的不应该编写JavaScript自己来做URL验证,太难得到它的权利。 相反,你应该使用的库函数 ,即经过测试,确认被许多专家是正确的。

也许你正在使用已经JavaScript的fraimwork对这项工作的好工具。 在这种情况下使用它。 不幸的是,我不能建议为URL验证任何特定的库特别。

此外,你可能要考虑查验网址为乔希斯托多拉建议,以检查它是否真的存在。 虽然具体的方式乔希认为,可能是有问题的情况下,通过URL引用的资源是10GB的文件:



Answer 2:

做格式化一个基本的正则表达式测试。 然后使用ping该URL 的XMLHttpRequest以确保它的存在。 使用jQuery的一个例子...

var url = $("#txtUserWebSite").val();
var reg = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([,-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([,-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([,-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/; 

if(!reg.test(url)) {
  alert("Invalid URL!");
  return false;
}

$.get(url, function(dat, stat) {
  if(stat == "success")
    alert("Valid URL!");
  else
    alert("Invalid URL!");
})


Answer 3:

 var regExpUrl = new RegExp( "^((http|https|ftp)\://){1}([a-zA-Z0-9\.\-]+\.(\:[a-zA-Z0-9\.&amp;%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&amp;%\$#\=~_\-]+))*$"); var inputArrs = [ "http://190.190.1.190:8080", "https://190.190.1.190:8080", "http://190.190.1.190:8080/", "http://190.190.1.190:8080/xampp/", "http://190.190.1.190:8080/testproject", "http://190.190.1.190:8080/testproject/admin/index.php", "http://190.190.1.190:8080/testproject/admin/index.php?a=asdf&asdf", "http://190.190.1.190:8080/phpmyadmin", "http://www.google.com.au", "https://www.google.com.au/asdf/asdf/asdfasdf?asdf=asdf&asdf=asdf", "http://google.com.au", "https://google.com.au", "www.google.com.au", "google.com.au", "http://www.google.com.au", "test", "!@#!@#!@#", "123", "210.110", "yyyy", "255.0.0.y", "666.10.10.20", "4444.11.11.11", "33.3333.33.3", "190.190.1.190", "190.190.1.190", "190.190.1.190:80", "190.190.1.190:8080", "190.190.1.190:", ]; inputArrs.forEach(function(input) { if(regExpUrl.test(input)) { res = "URL/IP Valid"; } else { res = "Invalid URL/IP"; } prevVal = document.getElementById("response").innerHTML; document.getElementById("response").innerHTML = prevVal + "<br/>" + input + " = " + res + "<br/>"; }); 
 <div id="response"></div> 

 <script> var regExpUrl = new RegExp( "^((http|https|ftp)\://){1}([a-zA-Z0-9\.\-]+\.(\:[a-zA-Z0-9\.&amp;%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&amp;%\$#\=~_\-]+))*$"); var inputArrs = [ "http://190.190.1.190:8080", "https://190.190.1.190:8080", "http://190.190.1.190:8080/", "http://190.190.1.190:8080/xampp/", "http://190.190.1.190:8080/testproject", "http://190.190.1.190:8080/testproject/admin/index.php", "http://190.190.1.190:8080/testproject/admin/index.php?a=asdf&asdf", "http://190.190.1.190:8080/phpmyadmin", "http://www.google.com.au", "https://www.google.com.au/asdf/asdf/asdfasdf?asdf=asdf&asdf=asdf", "http://google.com.au", "https://google.com.au", "www.google.com.au", "google.com.au", "http://www.google.com.au", "test", "!@#!@#!@#", "123", "210.110", "yyyy", "255.0.0.y", "666.10.10.20", "4444.11.11.11", "33.3333.33.3", "190.190.1.190", "190.190.1.190", "190.190.1.190:80", "190.190.1.190:8080", "190.190.1.190:", ]; inputArrs.forEach(function(input) { if(regExpUrl.test(input)) { res = "URL/IP Valid"; } else { res = "Invalid URL/IP"; } prevVal = document.getElementById("response").innerHTML; document.getElementById("response").innerHTML = prevVal + "<br/>" + input + " = " + res + "<br/>"; }); </script> 
 <div id="response"></div> 



Answer 4:

退房的正则表达式库 ,里面有各种验证的正则表达式的一个大仓库。 他们还提供了一个在线测试工具。



文章来源: how can i validate a url in javascript using regular expression