Replace capture group of dynamic size

前端 未结 2 1028
甜味超标
甜味超标 2021-01-15 14:15

I want to replace the first part of regex for a URL with asterisks. Depending on the regex, for example:

Case 1

http://example.com/pat

2条回答
  •  Happy的楠姐
    2021-01-15 14:40

    You can use the sticky flag y (but Internet Explorer doesn't support it):

    s = s.replace(/(^https?:\/\/.*?\/path1\/?|(?!^))./gy, '$1*')
    

    But the simplest (and that is supported everywhere), is to use a function as replacement parameter.

    s = s.replace(/^(https?:\/\/.+\/path1\/?)(.*)/, function (_, m1, m2) {
        return m1 + '*'.repeat(m2.length);
    });
    

    For the second case, you can simply check if there's an @ after the current position:

    s = s.replace(/.(?=.*@)/g, '*');
    

提交回复
热议问题