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 в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.