求一段JS正则(取URL参数)

?id=001&from=1我用reactthis.props.location.search已经取出主要部分,不太懂正则,求教

阅读 5.4k
8 个回答
var str = "?id=001&from=1";
JSON.parse("{" + 
                 str.replace("?", "\"")
                    .replace(new RegExp(/(&)/g),'\",\"')
                    .replace(new RegExp(/(=)/g),'\":\"')
               + "\"}")
var reg = /([^?=&]+)=([^?=&]*)/g,
    str = window.location.href,
    tempObj = {};
   
str.replace(reg,function(str,key,val){
    var k = decodeURIComponent(key),
        v = decodeURIComponent(val);
    tempObj[k] = v || "";
    return str;
});

location里边不应该还有一个query的吗?难道我记混乱了。。。

可以考虑以下做法:

JSON.parse(
    '{' + 
        locatio.search
            .replace('?', '')
            .replace(/&/g, ',')
            .replace(/(\w+)=?(\w+|)/ig, '"$1":"$2"') + '}')

有可能出现:"?a=1&b=2&c=",甚至 "?a=1&b=2&c"

"?id=001&from=1".replace('?', '').replace('&', ',').replace(/(w+)=(w+)/g, '$1:$2')

var parms = location.search.replace("?","").split("&");
var json = {};
for(let i = 0, n = parms.length; i<n; i++ ){
    let t = parms[i].split("=");
    json[ t[0] ] = t[1];
}

楼上JSON.parse的方法挺方便的,不过要考虑ie8-兼容问题,我写的这种不需要考虑兼容但是要麻烦点

function GetRequest() {

        var url = location.search; //获取url中"?"符后的字串
        var theRequest = new Object();
        if (url.indexOf("?") != -1) {
            var str = url.substr(1);
            strs = str.split("&");
            for(var i = 0; i < strs.length; i ++) {
                theRequest[strs[i].split("=")[0]]=(strs[i].split("=")[1]);
            }
        }
        return theRequest;
    }
(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?
function get_param(name){
    var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"),
    r = window.location.search.substr(1).match(reg);
    if(r!=null)return  decodeURI(r[2]); return null;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题