我试图找到一种更简单的方法来更改当前 url 上的 2 个变量,而无需拆分 url 并重新构建它。
例如,如果我有一个 url ,并且http://www.anysite.com/any/12/this/url/10/20
想将最后一个更改为变量,10
例如,有没有比使用更简单的方法,那么必须重新构建整个 url? 20
20
30
window.location.href.split("/")
我试图找到一种更简单的方法来更改当前 url 上的 2 个变量,而无需拆分 url 并重新构建它。
例如,如果我有一个 url ,并且http://www.anysite.com/any/12/this/url/10/20
想将最后一个更改为变量,10
例如,有没有比使用更简单的方法,那么必须重新构建整个 url? 20
20
30
window.location.href.split("/")
使用正则表达式函数替换:
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' 的末尾(因为在模式的末尾有一个 $ )格式的字符串:[数字+10]/[数字+10]。
如果这是您想要的,使用正则表达式将是避免分裂的最佳方法。
参见(例如):
至于替换 URL,这将是一个问题location.replace(/* new URL here*/)
,实际上是在浏览器历史记录中替换 URL。
您可以使用正则表达式:
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”。根据您想要进行替换的确切情况,您可能会稍微调整正则表达式以允许或禁止某些情况。
你可以抓住它是一个字符串,然后按照你认为合适的方式修剪和附加。
您可以将其作为字符串抓取并使用搜索和替换。
您可以将其作为字符串抓取并对其运行 GREP。
但是,老实说,只做拆分/数组的事情可能是最简单的。
这完全取决于您必须遵守的格式规则。
好的,这是您可以使用的功能。
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;
}
在这里提琴