在JS

时间:2017-08-11 18:44:42

标签: javascript replace

我需要在网址中增加一个数字,该数字始终以page/开头,所以就像page/2/一样,但网址可以按任何方式构建,甚至可以包含其他数字。

这是我的工作,但增加了所有数字,而不仅仅是page/之后的数字。我需要做什么才能将其限制为page/前面的数字?

let link = '//localhost:3000/insight/page/2/';
let next = link.replace(/\d+/g, function(n){ return ++n });

console.log(next)

//Outputs '//localhost:3001/insight/page/3/'

//Needs to be '//localhost:3000/insight/page/3/'

这是一个轻松的代码:https://codepen.io/matt3224/pen/brrEQB?editors=1111

非常感谢

@adeneo解决方案

let link = '//localhost:3000/insight/page/2/';
let next = link.replace(/page\/(\d+)\//, (x,y) => `page/${(++y)}/`);

2 个答案:

答案 0 :(得分:5)

您可以查找以下斜杠和字符串的结尾并替换该数字。

let link = '//localhost:3000/insight/page/2/';
let next = link.replace(/\d+(?=\/$)/g, n => +n + 1);

console.log(next);

答案 1 :(得分:1)

匹配page//之间的任何数字都应该有效,无论其他数字或网址在何处发生

let link = '//localhost:3000/insight/page/2/';
let next = link.replace(/page\/(\d+)\//, (x,y) => 'page/' + (++y) + '/');

console.log(next)

test( '//localhost:3000/insight/page/2/' );
test( '//localhost:3000/insight/page/2/more/here' );
test( '//localhost:3000/page/2/' );
test( '//localhost:3000/insight/page/2/2/2/2/' );

function test(link) {
	var next = link.replace(/page\/(\d+)\//, (x,y) => 'page/' + (++y) + '/');
	console.log(next)
}