<script type="text/javascript">
var url='www.baidu.com?a=666&b=000&c=2333&e=haha&f=qaq&g=MDZZ';
function formatUrl(url){
var reg=/(?:[?&]+)([^&]+)=([^&]+)/g; //三个分组,并且不匹配第一个分组
var data={};
function fn(str,pro,value){
data[decodeURIComponent(pro)]=decodeURIComponent(value);
}
url.replace(reg,fn);
return data;
}
var data=formatUrl(url);
</script>
针对以上代码的简单分析:
1.忽略分组(不希望捕获分组,只需在分组内加“?:”)
var reg=/(?:[?&]+)([^&]+)=([^&]+)/g;
2.
replace(str,replaceStr) (找谁,换成谁)
replace(reg,function)
function会在每次匹配替换的时候调用,有四个参数
a.匹配字符串
b.正则表达式分组内容,没有分组则无此参数
c,匹配项在字符串中的index
d.原字符串(replace不会改原字符串值)