js正则解析url参数及验证url的函数举例

发布时间:2020-01-14编辑:脚本学堂
本文介绍下,用js的正则解析URL中的参数,以及验证URL的一例函数,有需要的朋友参考下。

首先,来看js通过正则验证URL参数的例子,如下:

<script>
//正则解析URL参数 
//by www.jb200.com
var url = "http://127.0.0.1/e/action/ShowInfo.php?classid=9&id=2";//定义变量
function parse_url(_url){ //定义函数
var pattern = /(w+)=(w+)/ig;//定义正则表达式
var parames = {};//定义数组
url.replace(pattern, function(a, b, c){parames[b] = c;});
/*.当replace匹配到classid=9时.那么就用执行function(a,b,c);其中a的值为:classid=9,b的值为classid,c的值为9;(这是反向引用.在定义 正则表达式时有两个子匹配.)然后将
数组的key为classid的值赋为9;然后完成.再继续匹配到id=2;此时执行function(a,b,c);其中a的值为:id=2,b的值为id,c的值为2;然后将数组的key为id的值赋为2.*/
return parames;//返回这个数组.
}
var parames = parse_url(url);
alert(parames['classid'] + ", " + parames['id']);//最后打印.根据key值来打印数组对应的值
</script>

再来看下,JS验证URL函数的正则实例。

以下代码,应用javascript的正则,可以实现:
验证的情况包括IP,域名(domain),ftp,二级域名,域名中的文件,域名加上端口!用户名等。

代码:

<script>
//验证URL的方法一
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);
}
}
//验证URL的方法二
function CheckUrl(str) {
var RegUrl = new RegExp();
RegUrl.compile("^[A-Za-z]+://[A-Za-z0-9-_]+.[A-Za-z0-9-_%&?/.=]+$");//www.jb200.com
if (!RegUrl.test(str)) {
return false;
}
return true;
}
</script>