Похоже на ошибку в книге.
- Регулярное выражение в фрагментах кода использует группы, не связанные с захватом: что представляет собой группа, не участвующая в захвате? Что делает (? :)?
Они не пригодны для обратных ссылок. Вместо этого используйте обычные скобки:
const promo = "Opening for XAAX is the dynamic GOOG! At the box office now!";
const bands = promo.match(/([A-Z])([A-Z])21/g);
console.log('bands: '+ bands);//output was null
То же самое касается других образцов ...
Обновление : я проверил исходный источник (3-е издание) и могу подтвердить: все образцы ошибочны и используют группы, не связанные с захватом.
Кстати: автор пишет:
Группировка позволяет использовать другой метод, называемый обратными ссылками. По моему опыту, это одна из наименее используемых функций регулярного выражения, но есть один случай, когда это пригодится. ...
Единственный раз, когда мне кажется, что мне когда-либо приходилось использовать обратные ссылки (кроме решения головоломок), является сопоставление кавычек. В HTML вы можете использовать одиночные или двойные кавычки для значений атрибутов.
Затем следует образец регулярного выражения HTML, показанный в OP. Ктулху звонит?