js正则-截取浏览器参数包含=、==

2018-05-18  本文已影响6人  云桃桃

有时候在两页面需要互相传值的情况下,咱们可能会用浏览器后面加入参数的形式,而参数有时候需要base64加密或者别的形式,加密后,可能会出现参数后面带=以及==的情况(形如:http://localhost:52857/0.html?a=1==&b=234=&c=10&d=8907TYKKKQG7==)。这两天刚好在练习正则,所以就小试牛刀一下。

步骤

  1. 获取浏览器参数
 var urlParam=window.location.hash.split(?)[1];

2.分离各个参数

var arr=urlParam.split("&");
  1. 正则处理
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);
上一篇下一篇

猜你喜欢

热点阅读