Регулярные выражения это сложно. Их чтение требует больших когнитивных усилий. Чтобы это упростить созданны Named Capture Groups.
Сравните две регулярки:
1️⃣
/(\d{4})-(\d{2})-(\d{2})/2️⃣
/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/Блоки внутри круглых скобок называются capture groups. Во второй регулярке они именованные. Работают они одинаково, но после у второй после вызова exec будет поле groups, смотри картинку или пример на runkit.
Еще именнованные группы можно использовать в replace. Пример:
"prefix-example".replace(/prefix-(?<value>.*)/, '$<value>')В eslint-plugin-regexp существует правило regexp/prefer-named-capture-group, которое форсирует использование именнованых груп.