js正则表达式验证URL函数代码(方便多个正则对比)

所属分类: 网络编程 / 正则表达式 阅读数: 736
收藏 0 赞 0 分享

推荐大家收藏的一段代码,方便同时测试多个正则,查看不同的检测结果,结合chrome完美

核心代码

<script>
/**
 * 正则表达式判断网址是否有效
 */
 
(function(){
  "use strict";
 
  var urlDict=[
    //Bad Case
    'www.baidu.com',           //常规网址,未带协议头的地址
    'w.baidu.com',            //常规网址,短子域名
    'baidu.com',             //常规网址,仅有主域名
    '测试.com',              //非常规合法网址,中文域名不在参考之列
    '1.2',                //错误域名
    ' WWWW ',              //无效字符串
    '111测试',              //无效字符串
    //Correct Case
    'http://baidu.com',          //常规网址,仅有主域名
    'http://www.baidu.com',        //常规网址,带子域名
    'https://www.baidu.com/',       //常规网址,使用https协议头,带根目录
    'http://www.baidu.com/api',      //常规网址,有一级目录下资源
    'http://www.subdomain.baidu.com/index/subdir',   //常规网址,多级子域名,多级目录
    'http://www.www.subdomain.baidu.com/index/subdir/',//常规网址,多级子域名,多级目录,目录地址闭合
    'http://io.io'            //非常规网址,多级子域名,多级目录,目录地址闭合
  ];
 
  // 建议的正则
  function isURL(str){
    return !!str.match(/(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/g);
  }
 
  // 不知道谁写的简单版的坑爹正则
  function badRegFn(str){
    return !!str.match(/(http[s]?|ftp):\/\/[^\/\.]+?\..+\w$/g);
  }
	//jb51
	function IsURL(str_url){
   var strRegex = "^((https|http|ftp|rtsp|mms)?://)" 
   + "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" //ftp的user@ 
      + "(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184 
      + "|" // 允许IP和DOMAIN(域名)
      + "([0-9a-z_!~*'()-]+\.)*" // 域名- www. 
      + "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // 二级域名 
      + "[a-z]{2,6})" // first level domain- .com or .museum 
      + "(:[0-9]{1,4})?" // 端口- :80 
      + "((/?)|" // a slash isn't required if there is no file name 
      + "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$"; 
      var re=new RegExp(strRegex); 
   //re.test()
      if (re.test(str_url)){
        return (true); 
      }else{ 
        return (false); 
      }
    }
 
 
  // 测试用例覆盖
  (function(){
    var ret={}; 
    var collect=function(link){
      var obj={},fnList=[isURL,badRegFn,IsURL];
      for(var i=0,j=fnList.length;i<j;i++){
        var fn=fnList[i];
        obj[fn.name]=fn.call(null,link);
      }
      return obj;
    };
 
    for(var i=0,j=urlDict.length;i<j;i++){
      ret[urlDict[i]]=collect(urlDict[i]);
    }
 
    console.log(ret),console.table(ret);
  }());
 
}());
</script>

调试方法:

将上面的代码保存为test.htm在chrome中运行,打开F12,即可看到效果如下图所示

看了上面的主要是一些检测url的正则了,大家可以参考这篇文章:https://www.jb51.net/article/31550.htm

更多精彩内容其他人还在看

手机号码验证方法(正则验证)

这篇文章主要介绍了手机号码验证方法(正则验证),在文章中还给大家补充了最新手机号的验证正则表达式,需要的朋友可以参考下
收藏 0 赞 0 分享

利用正则表达式提取固定字符之间的字符串

这篇文章主要给大家介绍了利用正则表达式提取固定字符之间的字符串,文中给出了详细的示例代码,需要的朋友可以参考借鉴,下面来一起看看吧。
收藏 0 赞 0 分享

js中使用正则表达式查找字母和数字的方法

这篇文章主要介绍了 js中使用正则表达式查找字母和数字的方法,在代码底部给大家介绍了js用正则表达式验证密码包含数字和字母的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

一个容易犯错的js手机号码验证正则表达式(推荐)

这篇文章主要介绍了 一个容易犯错的js手机号码验证正则表达式(推荐),需要的朋友可以参考下
收藏 0 赞 0 分享

正则表达式进行页面表单验证功能

一般做到注册页面的时候,当用户填完信息,都需要对他们的信息进行验证,这就要用到正则表达式。本文通过实例给大家介绍正则表达式进行页面表单验证功能,一起看看吧
收藏 0 赞 0 分享

比较常用的几个正则表达式匹配数字(收藏)

正则表达式用于字符串处理、表单验证等场合,实用高效。今天小编给大家分享比较常用的几个正则表达式匹配数字,需要的朋友参考下
收藏 0 赞 0 分享

php与javascript正则匹配中文的方法分析

这篇文章主要介绍了php与javascript正则匹配中文的方法,结合实例形式分析了针对utf-8与GBK编码情况下的php、javascript正则匹配中文操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

bash 中用于grep的正则表达式

正则表达式是一类用于匹配文本的表达方式,常用于grep命令中表达检索条件。接下来通过本文给大家介绍bash 中用于grep的正则表达式,需要的朋友参考下吧
收藏 0 赞 0 分享

js中string之正则表达式replace方法详解

本篇文章主要介绍了js中string之正则表达式replace方法详解,replace方法是javascript涉及到正则表达式中较为复杂的一个方法,严格上说应该是string对象的方法。
收藏 0 赞 0 分享

常用证件号码的正则表达式大全(收集整理)

前段时间做一个项目,需要对各种常用证件进行验证。而港澳通行证,台湾通行证,护照这些证件,在网上并没有找到做正则验证的方法。后来从脚本之家网站的代码中发现了这些验证规则,特效分享给大家,供大家参考
收藏 0 赞 0 分享
查看更多