用javascript替换URL中的参数值示例代码



function replaceUrlParameter(url, paramName, paramValue) {
    // 将参数名转换为正则可匹配的格式,比如将"name"转换为"[?&]name=[^&#]*"
    // 这将匹配形如"?name=xxx"或"&name=xxx"的字符串
    var re = new RegExp('([?&])' + paramName + '=.*?(&|#|$)', 'i');
    // 检查URL中是否已存在该参数
    if (url.match(re)) {
        // 如果存在,则替换为新的参数值
        return url.replace(re, '$1' + paramName + '=' + encodeURIComponent(paramValue) + '$2');
    } else {
        // 如果不存在,则根据URL中是否已有参数来添加新的参数
        var separator = url.indexOf('?') !== -1 ? '&' : '?';
        return url + separator + paramName + '=' + encodeURIComponent(paramValue);
    }
}

// 示例用法
var url = "http://example.com/page?name=oldName&age=25";
var newUrl = replaceUrlParameter(url, 'name', 'newName');
console.log(newUrl); // 输出: http://example.com/page?name=newName&age=25

这段代码定义了一个`replaceUrlParameter`函数,它接受三个参数:`url`(原始URL)、`paramName`(要替换的参数名)、`paramValue`(新的参数值)。函数首先通过正则表达式检查URL中是否已经存在该参数,如果存在,则将其替换为新的值;如果不存在,则根据URL中是否已有查询参数来添加新的参数。最后,提供了一个示例用法来展示如何调用这个函数。