在jQuery中使用动态参数和值更改URL的查询参数

时间:2018-12-13 08:58:07

标签: javascript jquery regex query-parameters

我需要更改给定URL的查询参数的值,而与值类型无关。

我有类似的功能

function urlGenerator (key, value) {
    var url = "www.domain.com/?id=10&name=xxx&dob=2018-12-13";
    // change the value for given key
    return url;
}

查询参数的顺序不固定。它可以是任何顺序。我认为正则表达式可以找到解决方案。

我需要通用解决方案,而不管上述指定URL的值类型如何。我需要像下面那样调用上述方法,并且必须获取结果URL。

result = urlGenerator('id', 15);
result = urlGenerator('name', 'yyy');
result = urlGenerator('dob', '2018-10-20');

提前谢谢!

2 个答案:

答案 0 :(得分:1)

我使用replace通过正则表达式更改值。

尝试使用此urlGenerator函数:

function urlGenerator(url, field, value) {
    var reg = new RegExp('('+field+'=[^&]*)', "");
    return url.replace(reg, field+'='+value);
}

编辑:

如果您的函数中没有静态网址:

function urlGenerator(field, value) {
    var url = "www.domain.com/?id=10&name=xxx&dob=2018-12-13";
    var reg = new RegExp('('+field+'=[^&]*)', "");
    return url.replace(reg, field+'='+value);
}

答案 1 :(得分:1)

您可以这样做

因此,在temp变量中,我们使用string template为regex构建表达式,而不是使用RegExp将其更改为regex对象。然后使用replace方法替换{{ 1}}和matched value

value supplied in function