Javascript获取依次具有查询字符串参数的查询字符串参数值

Javascript获取依次具有查询字符串参数的查询字符串参数值,javascript,jquery,query-string,Javascript,Jquery,Query String,我的正则表达式很差,所以希望能在这里得到一些帮助。 我有一个url,它有一个查询字符串参数。该参数又是一个url,它本身具有qs参数。 例如:我的url类似于 现在,当我使用任何一个函数来提取整个查询字符串参数时,我只得到了第一个 我期待的是::/en-us/products-overview/find-product/home/kitchen/2980?source=google&isadvisement=false&organic=true 但我得到的是:/en-us/products-o

我的正则表达式很差,所以希望能在这里得到一些帮助。 我有一个url,它有一个查询字符串参数。该参数又是一个url,它本身具有qs参数。 例如:我的url类似于

现在,当我使用任何一个函数来提取整个查询字符串参数时,我只得到了第一个

我期待的是::/en-us/products-overview/find-product/home/kitchen/2980?source=google&isadvisement=false&organic=true

但我得到的是:/en-us/products-overview/find-product/home/kitchen/2980?source=google

请注意,缺少其他两个参数(isAdvertision和organic)

我的职能是

function getUrlParameter(name) {
    var url = 'http://myurl.com/somepage?ref=/en-us/products-overview/find-product/home/kitchen/2980?source=google&isadvertisement=false&organic=true';
    name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
    var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
    var results = regex.exec(url);
    return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
};
JsFiddle:


我尝试从SO的其他链接提取QS参数。它们似乎都无法处理这种情况

url中的符号被视为顶级参数分隔符。如果它们本身是参数的一部分,则需要对其进行转义。您的转义url看起来像。url的编码方式取决于它来自何处。JS提供了
encodeURIComponent()
函数

然后可以使用
decodeURIComponent()
将其解码回预期的url。问题来自嵌套查询参数

不过,要获取一般查询参数,使用的内置解决方案可能类似于:

var url=new URL('...');
for (var e of url.searchParams.entries()){
    console.log(e);
}

除了
ref
之外,是否还包括其他参数?可能有。。不是我们加上去的。。但是有一种可能..一种可能的解决方案:(新URL(URL)).search.substr(5)最简单的修复方法是对
ref
值进行编码。类似于:-如果/当您决定添加其他参数时,这也将解决任何困惑。@Jack漂亮而简单的解决方案。如果你能把它写下来作为答案,我会记下来的。。谢谢。在这段时间里,我一直在试图修复正则表达式,但你解决了这个问题:)