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中是否已有查询参数来添加新的参数。最后,提供了一个示例用法来展示如何调用这个函数。