replaceAll() в JavaScript

replaceAll() заменяет все найденные совпадения в строке.

let text = 'кот и кот';
let result = text.replaceAll('кот', 'пес');

console.log(result);

Результат:

пес и пес

Метод нашел оба слова ‘кот’ и заменил каждое на ‘пес’.

Что делает replaceAll()

replaceAll() ищет фрагмент строки и заменяет все его вхождения.

let message = 'JS, JS и еще раз JS';

console.log(message.replaceAll('JS', 'JavaScript'));

Результат:

JavaScript, JavaScript и еще раз JavaScript

Метод удобно использовать, когда один и тот же фрагмент может встретиться в строке несколько раз.

Синтаксис

Основная запись выглядит так:

string.replaceAll(searchValue, newValue);

searchValue - что нужно найти.

newValue - на что нужно заменить.

let text = 'red red red';

console.log(text.replaceAll('red', 'blue'));

Результат:

blue blue blue

Замена всех совпадений

Главное отличие replaceAll() в том, что он не останавливается после первого найденного фрагмента.

let text = 'день, день, день';

console.log(text.replaceAll('день', 'ночь'));

Результат:

ночь, ночь, ночь

Заменились оба совпадения.

Отличие от replace()

replace() с обычной строкой заменяет первое совпадение, а replaceAll() - все.

let text = 'кот кот кот';

console.log(text.replace('кот', 'пес'));
console.log(text.replaceAll('кот', 'пес'));

Результат:

пес кот кот
пес пес пес

Если нужно заменить только первое совпадение, подойдет replace(). Если все - replaceAll().

Удаление фрагментов

Чтобы удалить все найденные фрагменты, замените их на пустую строку.

let phone = '+7 (999) 123-45-67';

console.log(phone.replaceAll('-', ''));

Результат:

+7 (999) 1234567

Так можно убрать все одинаковые символы или части строки.

Если совпадение не найдено

Если нужного фрагмента нет, replaceAll() вернет строку без изменений.

let text = 'JavaScript';

console.log(text.replaceAll('HTML', 'CSS'));

Результат:

JavaScript

Регулярное выражение

Первым аргументом можно передать регулярное выражение, но у него должен быть флаг g.

let text = 'Пароль: 12345';

console.log(text.replaceAll(/\d/g, '*'));

Результат:

Пароль: *****

Без флага g метод выдаст ошибку. Если регулярные выражения пока не нужны, используйте обычные строки.

Строка не меняется

replaceAll() не изменяет исходную строку. Он возвращает новую строку.

let text = 'кот и кот';

text.replaceAll('кот', 'пес');

console.log(text);

Результат:

кот и кот

Чтобы использовать результат, его нужно сохранить.

let text = 'кот и кот';
let result = text.replaceAll('кот', 'пес');

console.log(result);

Результат:

пес и пес

Итого

replaceAll() нужен, когда нужно заменить все совпадения в строке.

  • replaceAll(searchValue, newValue) ищет фрагмент и заменяет все его вхождения.
  • С обычной строкой replaceAll() заменяет все совпадения.
  • replace() заменяет первое совпадение, replaceAll() - все.
  • Если совпадение не найдено, строка вернется без изменений.
  • Исходная строка не меняется.