获取地址栏参数 - queryString(正则表达式版本)

获取所有query string

function queryStringAll(src){
    src = src || location.search || location.hash;
    var reg = /[?&]([^?&=]+)=([^?&=]*)/g,
        res,
        obj = {};
    while(res = reg.exec(src)){
        obj[res[1]] = res[2] == null ? undefined : decodeURIComponent(res[2]);
    }
    return obj;
}

replace版本的会更简洁一些,replace做正则匹配,可以收集结果,比exec要简洁一些,详细的replace用法,可参考详解JS正则replace的使用方法

function queryStringAll(src){
    src = src || location.search || location.hash;
    let res = {};
    src.replace(/[?&]([^?&=]+)=([^?&=]*)/g, (rs,$1,$2) => {
        res[$1] = $2;
    })
    return res;
}

获取指定name的query string

function queryString(key,src){
    src = src || location.search || location.hash;
    var reg = new RegExp('[?&]' + key + '=([^?&=]*)(?=&|$)'),
        match = reg.exec(src);
    return match == null ? null : decodeURIComponent(match[1]);
}

 现在已经不用考虑兼容IE,使用URLSearchParams是更简便的方法

let p = new URLSearchParams(location.search)

p.get(参数名)

let p = new URLSearchParams()

p.set('a', 1)
p.set('b', 2)

p.toString() //得到 a=1&b=2,一个反转操作,可得到queryString

无需进行判断,URLSearchParams已经处理了边界情况

有道词典
function queryS ...
详细X
]]> </input> <translation> <![CDATA[
posted @ 2016-12-07 15:12  全玉  阅读(1048)  评论(0编辑  收藏  举报