我正在尝试找到一种更简单的方法来更改当前网址上的2个变量,而无需拆分网址并重新构建它。
例如,如果我有一个网址http://www.anysite.com/any/12/this/url/10/20
,并希望将最后一个更改为变量10
,将20
更改为20
和30
,例如比使用window.location.href.split("/")
更简单的方法然后必须重新构建整个网址?
答案 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