有时候在两页面需要互相传值的情况下,咱们可能会用浏览器后面加入参数的形式,而参数有时候需要base64加密或者别的形式,加密后,可能会出现参数后面带=以及==的情况(形如:http://localhost:52857/0.html?a=1==&b=234=&c=10&d=8907TYKKKQG7==)。这两天刚好在练习正则,所以就小试牛刀一下。
步骤
- 获取浏览器参数
var urlParam=window.location.hash.split(?)[1];
2.分离各个参数
var arr=urlParam.split("&");
- 正则处理
var hrefObj={};
for(var i=0;i<arr.length;i++){
//两个括号用于分组提取key,value
var key=/(\w+)=(\w{1,}={0,})/;
//如果key后面也有=,这个就更强大一些
var key=/(\w+)={1}((\w|=){1,})/;
var regarr = arr[i].match(key);
hrefObj[regarr[1]]=regarr[2];
}
console.log(hrefObj);
总结:写成方法
function getUrlParam(){
if(window.location.search){
var urlParam=window.location.search.split('?')[1];
var arr=[];
var hrefObj={};
var arr=urlParam.split("&");
for(var i=0;i<arr.length;i++){
var key=/(\w+)={1}((\w|=){1,})/;
// 如果要支持别的符号
// var key=/(\w+)={1}(.+)/;
var regarr = arr[i].match(key);
hrefObj[regarr[1]]=regarr[2];
}
return hrefObj;
}
return null;
}
// 打印一下
var obj=getUrlParam();
console.log(obj);