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 не выполняет. Успешное выполнение в одной среде не гарантирует поддержку метода во всех браузерах.