Я хочу заменить, если строка начинается с / до следующего уникального символа ... Я пробовал, как показано ниже, но он заменяет все вхождения только одним! Я хочу заменить все символы вхождения ...

var textTitle = "///test///";
var result = textTitle.replace(/^\/{1,}/g, '../');
console.log(result); // wanted => ../../../test///

textTitle = "//test/";
result = textTitle.replace(/^\/{1,}/g, '../');
console.log(result); // wanted => ../../test/
1
David Jaw Hpan 14 Мар 2018 в 11:54

2 ответа

Лучший ответ

Используйте флаг y, который делает один шаг при каждом успешном подходе к свойству lastIndex:

console.log("///test///".replace(/\//gy, "../"));
1
revo 14 Мар 2018 в 09:12

Вы можете попробовать:

var textTitle = "///test///";
var result = textTitle.replace(/^\/{1,}/g, (match, key) => {
    return match.split('').reduce((res, next) => res += '..' + next, '');

});
console.log(result);
var textTitle = "///test///";
    var result = textTitle.replace(/^\/{1,}/g, (match, key) => {
        return match.split('').reduce((res, next) => res += '..' + next, '');

    });
    console.log(result);
0
David Ibl 14 Мар 2018 в 09:03