String.prototype.matchAll
Возвращает все совпадения вместе с группами.
Доступно с: ES2020
Синтаксис
str.matchAll(regexp)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| regexp | RegExp | Регулярное выражение обязательно с флагом g. |
Возвращаемое значение
IteratorИтератор совпадений, у каждого есть группы и позиция.
Примеры
Все пары ключ=значение:
const text = 'a=1, b=2, c=3';
for (const match of text.matchAll(/(\w)=(\d)/g)) {
console.log(match[1], match[2], match.index);
}Результат:
a 1 0
b 2 5
c 3 10Совпадения в объект через именованные группы:
const text = 'width=300 height=200';
const entries = [...text.matchAll(/(?<key>\w+)=(?<value>\d+)/g)].map((m) => [m.groups.key, Number(m.groups.value)]);
console.log(Object.fromEntries(entries));Результат:
{
"width": 300,
"height": 200
}Примечания
Без флага g метод выбрасывает TypeError. В отличие от match() с флагом g, сохраняет группы каждого совпадения.
См. также
- String.prototype.match — Ищет совпадения с регулярным выражением.
- RegExp.prototype.exec — Ищет совпадение и возвращает подробности: группы и позицию.
- Named capture groups — Именованные группы — части совпадения с понятными именами.
В учебнике
- Регулярные выражения — Регулярные выражения в JavaScript для начинающих: шаблоны, флаги, классы символов, проверка, поиск и замена текста.