更改当前URL的简单方法

时间:2012-11-05 23:08:34

标签: javascript

我正在尝试找到一种更简单的方法来更改当前网址上的2个变量,而无需拆分网址并重新构建它。

例如,如果我有一个网址http://www.anysite.com/any/12/this/url/10/20,并希望将最后一个更改为变量10,将20更改为2030,例如比使用window.location.href.split("/")更简单的方法然后必须重新构建整个网址?

5 个答案:

答案 0 :(得分:2)

使用regexp函数替换:

url.replace(/([0-9]*)\/([0-9]*)$/, function( str , n1 , n2 ){
  var new_n1 = 10 + parseInt( n1 , 10 );
  var new_n2 = 10 + parseInt( n2 , 10 );
  return new_n1 + '/' + new_n2;
});

这将替换字符串的一部分,其格式为:[number] / [number],它位于字符串'url'的末尾(因为模式末尾有一个$)是一个字符串格式为:[number + 10] / [number + 10]。

答案 1 :(得分:1)

使用正则表达式是避免窜动的最佳方法,如果这是你想要的。

参见(例如):

至于更换网址,这将是location.replace(/* new URL here*/)的问题,实际上是替换了浏览器历史记录中的网址。

答案 2 :(得分:0)

你可以抓住它是一个字符串,然后修剪并按你认为合适的方式追加。

您可以将其作为字符串抓取并使用搜索和替换。

您可以将其作为字符串抓取并对其运行GREP。

但是,老实说,最简单的做法就是分裂/阵列。

这一切都取决于您必须遵守的格式规则。

答案 3 :(得分:0)

您可以使用正则表达式:

var url = "http://www.anysite.com/any/12/this/url/10/20";
var newURL = url.replace(/10\/20$/, "20/30");

此正则表达式在URL末尾查找“10/20”并将其替换为“20/30”。根据您想要进行替换的具体情况,您可能会稍微调整正则表达式以允许或禁止某些情况。

答案 4 :(得分:0)

好的,这是一个你可以使用的功能。

function amendHref( a, b) {

    var str = window.location.href;

    var newHref = str.replace( /[\d]+\/[\d]+$/, a + "/" + b );
    //                          ^^^^^          digit one or more times
    //                               ^^        ( escaped ) forward slash
    //                                  ^^^^   digit one or more times
    //                                      ^  end of string

    window.location.href = newHref;
}

小提琴here