JavaScript通过正则表达式处理url参数
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