Вебсправочник
Справочник JavaScript

String.matchAll(): все совпадения с группами

Метод matchAll возвращает итератор совпадений, сохраняя группы и позиции для каждого найденного фрагмента.

Назначение

Метод matchAll возвращает итератор совпадений, сохраняя группы и позиции для каждого найденного фрагмента.

Как это работает

При передаче RegExp нужен флаг g. Итератор можно обойти for…of или преобразовать в массив. Первым элементом каждого совпадения является полный фрагмент, следующие содержат захваченные группы.

Пример

const matches=[..."a=12 b=7".matchAll(/([a-z])=(\d+)/g)];
console.assert(matches.length===2);
console.assert(matches[0][1]==="a");
console.assert(matches[1][2]==="7");

Что должно получиться

Получены две записи с буквенными и числовыми группами. Число внутри группы пока строка, поэтому арифметика потребует отдельного преобразования и проверки.

Граница применения и частая ошибка

Не используйте регулярные выражения вместо полноценного HTML-парсера для произвольного документа. Вложенность, экранирование и ошибки разметки требуют другого инструмента.

Самостоятельная проверка

Найдите два имени с числовыми значениями в простой строке. Добавьте пробелы и решите, нужно ли изменить шаблон, сохраняя явно заданный формат входных данных.

JavaScript в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.