美文网首页
js正则-截取浏览器参数包含=、==

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

作者: 云桃桃 | 来源:发表于2018-05-18 20:25 被阅读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);
    

    相关文章

      网友评论

          本文标题:js正则-截取浏览器参数包含=、==

          本文链接:https://www.haomeiwen.com/subject/ngqndftx.html