Javascript 如何使用Jquery替换url中的查询字符串值

Javascript 如何使用Jquery替换url中的查询字符串值,javascript,jquery,Javascript,Jquery,我想从url更改url查询字符串值。 例如: 我有这个网址:www.example.com/site-post/234-1993/ 假设234是个人id,1993年是个人年。如果没有重写规则,url如下所示: www.example.com/site post/?person\u id=234和person\u year=1993 当我按下按钮时,我想更改234和1993的值 我有一个用于不友好url的函数 function update_permalink(uri, key, value) {

我想从url更改url查询字符串值。 例如: 我有这个网址:www.example.com/site-post/234-1993/ 假设234是个人id,1993年是个人年。如果没有重写规则,url如下所示: www.example.com/site post/?person\u id=234和person\u year=1993

当我按下按钮时,我想更改234和1993的值

我有一个用于不友好url的函数

function update_permalink(uri, key, value) {
    var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
    var separator = uri.indexOf('?') !== -1 ? "&" : "?";
    if (uri.match(re)) {
        return uri.replace(re, '$1' + key + "=" + value + '$2');
    }
    else {
        return uri + separator + key + "=" + value;
    }
}
如果我调用此函数,它会将我的url www.example.com/site-post/234-1993/更改为www.example.com/site post/234-1993/?person\u id=234&person\u year=1993


是否有人知道如何更改url而不使用查询字符串附加当前url,只更改值?

我不太清楚您为什么要这样做,但这段代码应该可以工作:

function update_permalink(uri, param1, param2) {
  var re = uri.match(/([^\?]*)\/site-post\/(\d*)-(\d*)\//); 
  if (uri.match(/([^\?]*)\/site-post\/(\d*)-(\d*)\//)){
    uri = uri.replace(re[2],param1); 
    uri = uri.replace(re[3],param2); 
    return uri;
  }
}
然后像这样使用:

update_permalink("www.example.com/site-post/234-1993/",112,113);
结果:

www.example.com/site-post/112-113/

将此代码放入函数并检查

如果window.location.href.indexOf234>0{ var newUrl=window.location.href.replace234-1993/,?person\u id=234&person\u year=1993; window.history.replaceState{},newUrl;
}jQuery不是对您的问题的回答,但是您100%确定您知道您在这里做什么?您知道使用服务器端URL重写可能会更好吗?