替换url参数 - url被破坏

时间:2014-05-14 02:48:44

标签: javascript regex url

http://jsfiddle.net/b2QVT/

function paramReplace(name, string) {
    var re    = new RegExp("[\\?&]" + name + "=([^&#]*)"),
    newString = string.replace(re,"");

    alert(newString);
    return newString;                         
}
var name="variety";
var string="http://www.example.com/xyz/test.html?Color=Black&key=dress&variety=Leather";

alert(paramReplace(name, string));

var name = "Color";

alert(paramReplace(name, string));

在我的小提琴中,我试图在某些事件上使用javascript函数更新我的网址。

每当我删除与?相邻的url参数时,它正在删除?并只是附加其余值,因此在第一个警报中url很好,但是第二个函数调用url正在破碎。

如何处理此方案,其中?旁边的参数被删除。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这是一种方法:

function paramReplace(url, key, value) {
  var parser = document.createElement('a');
  parser.href = url;

  var re = new RegExp('^' + key + '=', 'i');
  var search = parser.search.substring(1).split('&');

  for (i = 0; i < search.length; i++) {
    if (re.test(search[i])) {
      search[i] = key + '=' + value;
      break;
    }
  }

  parser.search = search.join('&');
  return parser.href;
}

var url = "http://www.example.com/xyz/test.html?Color=Black&key=dress&variety=Leather";

var key = 'variety';
var value = 'modified';
console.log(paramReplace(url, key, value));

var key = 'color';
var value = 'modified';
console.log(paramReplace(url, key, value));

此代码解析URL,遍历搜索项并删除匹配的键值对。