两种常用的替换url参数方法
1. 常规js替换方法
这个方法可以精确匹配到url参数,不会出现类似:userId / nameId 将所有包含“Id”的都匹配。
const queryReplace = (href, key, keyValue) => {
if (href.indexOf(key) > -1) {
let reg = new RegExp(`((?=${key}=).*?(?=&))|((?=${key}=).*)`)
href = href.replace(reg, `${key}=${keyValue}`)
} else {
let join = href.indexOf('?') > -1 ? '&' : '?'
href += `${join}${key}=${keyValue}`
}
return href
}
queryReplace('https://www.xxxxx.com?id=1&nameid=2&ageid=3', 'id', '44444')
输出:https:www.xxxxx.com?id=44444&nameid=2&ageid=3
2. URL对象方法
js原生对象,但存在ie低版本兼容性问题。
const replaceUrlparams = (url, arg, argVal) => {
const urlInfo = new URL(url);
urlInfo.searchParams.set(arg, argVal)
return urlInfo.href
}