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

match(): результат поиска с группами и без них

Match возвращает совпадения строки с регулярным выражением. Форма результата зависит от флага g, поэтому перед обращением к группам нужно понимать выбранный режим.

Назначение

Match возвращает совпадения строки с регулярным выражением. Форма результата зависит от флага g, поэтому перед обращением к группам нужно понимать выбранный режим.

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

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

Пример

const text = "lesson-12 lesson-34";
const first = text.match(/lesson-(\d+)/);
console.assert(first[0] === "lesson-12" && first[1] === "12");
const all = text.match(/lesson-(\d+)/g);
console.assert(all.join("|") === "lesson-12|lesson-34");
console.assert(text.match(/chapter/) === null);
console.log(first.index, all);

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

Первый результат отдельно содержит число 12, второй — два полных фрагмента. Проверка отсутствующего chapter показывает необходимость обработки null до чтения свойств.

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

Не ожидайте одинакового расположения групп после добавления g. Для всех совпадений с группами рассмотрите matchAll. Совпавший фрагмент не обязательно доказывает валидность всей строки: для полного формата нужны правильно заданные границы и правила.

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

Добавьте третий номер и сравните match с matchAll. Проверьте строку без совпадений. Затем составьте выражение для проверки всего одного идентификатора и объясните роль начала и конца строки.

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

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