Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как заменить текст в строке

Короткий ответ

Метод replaceAll() заменяет все вхождения подстроки:

console.log('cat and cat'.replaceAll('cat', 'dog'));

Результат:

dog and dog

Только первое вхождение

Метод replace() со строкой заменяет только первое совпадение:

console.log('cat and cat'.replace('cat', 'dog'));

Результат:

dog and cat

Без учёта регистра

Используйте регулярное выражение с флагами g (все вхождения) и i (без учёта регистра):

console.log('Hello, hello'.replace(/hello/gi, 'Hi'));

Результат:

Hi, Hi

Замена функцией

Вторым аргументом может быть функция, которая строит замену из найденного текста:

const text = 'Prices: 10 and 25';
 
console.log(text.replace(/\d+/g, (match) => `$${match}`));

Результат:

Prices: $10 and $25

Частая ошибка

replaceAll() с регулярным выражением требует флаг g, иначе выбрасывает ошибку:

try {
  'a-b-c'.replaceAll(/-/, '+');
} catch (error) {
  console.log(error.name);
}
 
console.log('a-b-c'.replaceAll(/-/g, '+'));

Результат:

TypeError
a+b+c

Функции из этого ответа

  • String.prototype.replaceAll — Заменяет все вхождения подстроки на другую строку.
  • String.prototype.replace — Заменяет первое совпадение (или все — с флагом g у регулярного выражения).

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.