js验证url(正则表达式)

它验证的情况包括:IP,域名(domain),ftp二级域名,域名中的文件,域名加上端口。

<script language="JavaScript">
<!--
 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); 
        }
    }
-->
</script>


测试用例

<ol>
<li><a href="http://www.2mysite.net" onclick="alert(IsURL(this.href));">http://www.2mysite.net</a></li>
<li><a href="http://www.2mysite.net/index.htm" onclick="alert(IsURL(this.href));">http://www.2mysite.net/index.htm</a></li>
<li><a href="http://2mysite.net" onclick="alert(IsURL(this.href));">http://2mysite.net</a></li>
<li><a href="www.2mysite.net" onclick="alert(IsURL(this.href));">www.2mysite.net</a></li>
<li><a href="http://2007@www.2mysite.net" onclick="alert(IsURL(this.href));">http://2007@www.2mysite.net</a></li>
<li><a href="ftp://www.2mysite.net" onclick="alert(IsURL(this.href));">ftp://www.2mysite.net</a></li>
</ol>

发表评论