Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在替换url参数-url已损坏_Javascript_Regex_Url - Fatal编程技术网

Javascript 正在替换url参数-url已损坏

Javascript 正在替换url参数-url已损坏,javascript,regex,url,Javascript,Regex,Url,在我的小提琴中,我试图在某个事件上用javascript函数更新我的url 每当我删除与?相邻的url参数时,它都会删除?并仅附加其余的值,因此在第一个警报中,url是正常的,但在第二个函数调用中,url被破坏 如果删除了?旁边的参数,如何处理这种情况。有什么想法吗?这里有一种方法: function paramReplace(url, key, value) { var parser = document.createElement('a'); parser.href = url;

在我的小提琴中,我试图在某个事件上用javascript函数更新我的url

每当我删除与
相邻的url参数时,它都会删除
并仅附加其余的值,因此在第一个警报中,url是正常的,但在第二个函数调用中,url被破坏


如果删除了
旁边的参数,如何处理这种情况。有什么想法吗?

这里有一种方法:

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、键、值){
var parser=document.createElement('a');
parser.href=url;
var re=new RegExp('^'+key+'=','i');
var search=parser.search.substring(1.split('&');
对于(i=0;i

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

提示:使用
console.log
而不是
alert
-这非常烦人。与其使用正则表达式(因此出现第二个问题),不如尝试解析URL()然后将其重建为您所需的任何内容。更改策略以不使用空字符串替换
¶m=value
?param=value
,而是使用空字符串替换
param=value&
param=value
(最后一个参数)。url末尾的额外
&
不会破坏它(如果替换最后一个参数,它会出现)。@scrowler:我知道警报很烦人,但在我的情况下,这是调试某些东西的快速方法,当然我知道console.log,我真的不明白有3个以上的投票(?)对于这个评论。@Ulugbek Umirov:leaving&最终可能会破坏url,而且url看起来不好。很好,它可以工作。感谢您的帮助,我非常感谢。如何更改上述函数以接受3个参数,第三个是值
paramplace(名称、url、值)
需要找到一个参数并将其值替换为“value”?-上面的3个参数的代码实际上破坏了整个url…是的,对不起,我更改了参数的顺序。在本例中,第一个参数是URL,第二个是键,第三个是值。这取决于你定义的顺序。
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));