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

Change query parameters of URL using dynamic parameter and value in jQuery

我需要更改给定 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;
}

查询参数的顺序不固定。它可以是任何顺序。我认为可以通过 Regex 找到解决方案。

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

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

提前致谢!!

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

试试这个 urlGenerator 函数:

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

编辑:

如果您不想在函数中使用静态 url :

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);
}

你可以这样做

所以在临时变量中,我们正在使用 string template 为正则表达式构建一个表达式,而不是使用 RegExp 将其更改为正则表达式 object.And 然后通过使用 replace 方法我们将 matched value 替换为 value supplied in function.

function urlGenerator (key, value) {
    let temp = '(?<='+`${key}`+'=)[^&]+'
    let reg = new RegExp(temp,'g');
    console.log(reg);
    var url = "www.domain.com/?id=10&name=xxx&dob=2018-12-13";
    // change the value for given key
    return url.replace(reg, value);
}

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