Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: replace, replaceAll, string, regex, global flag

Чем отличаются replace() и replaceAll()?

Вопрос проверяет знание методов replace и replaceAll для работы со строками в JavaScript, а также понимание различий в замене подстрок с использованием регулярных выражений.

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

Метод replace() заменяет только первое совпадение подстроки или регулярного выражения, если не указан флаг g. Метод replaceAll() заменяет все совпадения и требует, чтобы регулярное выражение имело флаг g, иначе выбрасывает ошибку. Оба метода не изменяют исходную строку, а возвращают новую.

Длинный ответ

Основное различие между replace() и replaceAll()

Методы replace() и replaceAll() используются для замены подстрок в строке. Главное отличие заключается в количестве замен: replace() заменяет только первое совпадение, а replaceAll() — все совпадения.

Примеры использования

Рассмотрим строку 'Hello, world! Hello, everyone!'. Если мы хотим заменить слово 'Hello' на 'Hi':

const str = 'Hello, world! Hello, everyone!';
console.log(str.replace('Hello', 'Hi')); // 'Hi, world! Hello, everyone!'
console.log(str.replaceAll('Hello', 'Hi')); // 'Hi, world! Hi, everyone!'

Как видно, replace() заменяет только первое вхождение, а replaceAll() — все.

Работа с регулярными выражениями

Оба метода поддерживают регулярные выражения. Однако replaceAll() требует, чтобы регулярное выражение имело флаг g (global), иначе будет выброшена ошибка TypeError. replace() же без флага g заменяет только первое совпадение, а с флагом g — все.

const str = 'cat, cat, dog';
console.log(str.replace(/cat/, 'mouse')); // 'mouse, cat, dog'
console.log(str.replace(/cat/g, 'mouse')); // 'mouse, mouse, dog'
console.log(str.replaceAll(/cat/g, 'mouse')); // 'mouse, mouse, dog'
// console.log(str.replaceAll(/cat/, 'mouse')); // TypeError

Вывод

Используйте replaceAll(), когда нужно заменить все вхождения подстроки или шаблона, и replace(), если требуется заменить только первое совпадение. replaceAll() делает код более читаемым и явным, особенно при работе с регулярными выражениями.

Уровень

  • Рейтинг:

    4

  • Сложность:

    2

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#replace

#replaceAll

#string

#regex

#global flag

Подпишись на Java Developer в телеграм