Increment a number in a string based on the substring before it in JS

前端 未结 3 1332
独厮守ぢ
独厮守ぢ 2021-01-26 20:31

I need to increment a number in a url, the number is always preceded by page/ so like page/2/ however the url could be constructed any which way and ma

相关标签:
3条回答
  • 2021-01-26 20:43

    Matching any numbers between page/ and / should work, regardless of other numbers or where in the URL it occurs

    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)
    }

    0 讨论(0)
  • 2021-01-26 20:51

    You could look for a following slash and the end of the string and replace the number.

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

    0 讨论(0)
  • 2021-01-26 20:56

    Search for page/ followed by a digit, then slice out the digit, increment it, and rebuild the string.

    let next = link.replace(/page\/\d+/g, function(n){
        let num = parseInt(n.slice(5))
        num++
        console.log(num)
        const result = "page/"+num 
        return result
    });`
    

    As I was typing, adeneo did the same steps much more elegantly, but perhaps my answer will help someone see what's going on.

    0 讨论(0)
提交回复
热议问题