教程集 www.jiaochengji.com
教程集 >  脚本编程  >  javascript  >  正文 通过正则格式化url查询字符串的代码

通过正则格式化url查询字符串的代码

发布时间:2014-08-18   编辑:jiaochengji.com
看到以前项目中是通过js数组split方法格式化查询字符串的,以下使用正则来作测试,看看性能如何?
复制代码 代码如下:
var url='www.baidu.com?a=123&b=456&c=789&e=dfsdfsdfsdfsdfsdfsdf&f=46545454545454785&g=e23232dsfvdfvdf';
/**
* 格式化查询字符串(正则实现)
* @param url url地址
* @return {Object} 格式化的json对象
*/
function formatUrl(url){
var reg=/(?:[?&]+)([^&]+)=([^&]+)/g;
var data={};
function fn(str,pro,value){
data[decodeURIComponent(pro)]=decodeURIComponent(value);
}
url.replace(reg,fn);
return data;
}
/**
* 格式化查询字符串(数组实现)
* @param url url地址
* @return {Object} 格式化的json对象
*/
function formatUrl2(url){
url=url.replace(/.*\?/,'');
var args={},
items=url.length?url.split("&"):[]
,item=null
,i=0
,len=items.length;
for(i=0;i<items.length;i++){
item=items[i].split("=");
args[decodeURIComponent(item[0])]=decodeURIComponent(item[1]);
}
return args;
}
var startTime=new Date();
for(var i=0;i<1000000;i++){
formatUrl2(url);
}
console.log('formatUrl2',(new Date()-startTime)); //formatUrl2 12138
startTime=new Date();
for(var i=0;i<1000000;i++){
formatUrl(url);
}
console.log('formatUrl',(new Date()-startTime)); //formatUrl 12537

注解:
测试浏览器为chrme 25;
正则实现的函数居然比数组实现的函数要慢。
不过还好,在重复执行一百万次的情况下只慢了大约0.4秒。

您可能感兴趣的文章:
通过正则格式化url查询字符串的代码
javascript日期对象格式化为字符串
javascript 格式化时间日期函数代码
js正则表达式特殊字符过滤代码
url链接中特殊字符转义方法
PHP字符串函数与使用分析
php5 字符串处理函数汇总
php array数组的相关处理函数and str字符串处理与正则表达式
sql模糊查询实例详解
CodeIgniter的基本配置说明

[关闭]
~ ~