@bozedai

Как в JavaScript заменить (replace) группу в регулярном выражении с условием вхождения?

Дана строка "abc" или "adc"

Нужно заменить с помощью replace без использования callback-функции это выражение, в зависимости от того как символ стоит посередине.

Если "abc", то строка должна стать "a-b", а если "adc", то "a*c". Т.е. условие должно быть в заменяющем выражении, возможно ли это?

/(a)(b)(c)/.replace("$1$2$3")
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ответы на вопрос 3
qork
@qork
{ background: #F00B42 }
Вызываете метод replace у строки и передаёте регулярку и коллбек. В коллбеке пишете условия, по которым должна произойти замена.
MDN: String.prototype.replace()
Ответ написан
Tim-A-2020
@Tim-A-2020
Помог? Отметь решением
function regReplace(str, symbol) {
    return str.replace(/([\w\d]{1})(([\w\d]{1}))([\w\d]{1})/, '$1' + symbol + '$2');
}
var str = 'abc';
if (str[1] == 'b') {
    console.log(regReplace(str, '-'))
} else if (str[1] == 'd') {
    console.log(regReplace(str, '*'))
}
Ответ написан
@js-newbie
Если я вообще правильно понял условия, то как вариант - два последовательных replace вместо одного:
'abc'.replace(/(a)(b)c/, '$1-$2').replace(/(a)d(c)/, '$1*$2'); //a-b
'adc'.replace(/(a)(b)c/, '$1-$2').replace(/(a)d(c)/, '$1*$2'); //a*c
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы