先写一个测试地址
var url="www.baidu.com?a=1&b=2&C=3";
分析规则:
最前面是?或&,紧跟着除 ?&#以外的字符若干,然后是等号,最后再跟着除 ?&#以外的字符,并且要分组捕获到【除?&#以外的字符】
写出来的正则就是这样: var reg=/[?&]([^?&#]+)=([^?&#]+)/g;
用正则的exec来处理,同时用到while循环,因为我们不确定参数到底有多少对
可以看到在执行结果中匹配到的Array下标1就是我们要的参数名,下标2就是我们要的参数值,再把参数值、参数名放到对象中,完整如下:
var url="www.baidu.com?a=1&b=2&C=3";//测试地址
/*
分析:
最前面是?或&,紧跟着除 ?&#以外的字符若干,然后再等号,最后再跟着除 ?&#以外的字符,并且要分组捕获到【除?&#以外的字符】
*/
var reg=/[?&]([^?&#]+)=([^?&#]+)/g;
var param={};
var ret = reg.exec(url);
while(ret){//当ret为null时表示已经匹配到最后了,直接跳出
param[ret[1]]=ret[2];
ret = reg.exec(url);
}
console.log(param)
执行打印结果:
可以看到我们捕获到所有的参数,自己可以再做其他处理了。
处理while循环的时候要注意死循环,这是开发的时候经常犯错的地方,虽然我是老油条,也经常在这个地方犯错误,哈哈,打完收工!!