我需要在网址中增加一个数字,该数字始终以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)}/`);
答案 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)
}