Spec-Zone.ru › JavaScript

SyntaxError: дублирующееся имя группы захвата в регулярном выражении

Исключение JavaScript "duplicate capture group name in regular expression" возникает, когда шаблон регулярного выражения содержит две или более именованные группы захвата с одинаковым именем, и эти группы захвата могут быть сопоставлены одновременно.

Сообщение

SyntaxError: Invalid regular expression: /(?<a>)(?<a>)/: Duplicate capture group name (V8-based)
SyntaxError: duplicate capture group name in regular expression (Firefox)
SyntaxError: Invalid regular expression: duplicate group specifier name (Safari)

Тип ошибки

SyntaxError

Что пошло не так?

Все именованные группы захвата в шаблоне регулярного выражения должны иметь уникальные имена. Более новая функция позволяет именованным группам захвата использовать одинаковые имена, если они принадлежат разным альтернативам дизъюнкции и не могут быть сопоставлены одновременно (см. совместимость с браузерами для этого). Однако это все еще является ошибкой, если именованные группы захвата с одинаковым именем могут быть сопоставлены одновременно, поскольку это сделает другие функции, такие как именованные обратные ссылки, неоднозначными.

Примеры

Некорректные случаи

/(?<name>\w+) (?<name>\w+)/;

Корректные случаи

/(?<firstName>\w+) (?<lastName>\w+)/;
/(?<year>\d{4})-\d{2}|\d{2}-(?<year>\d{4})/;

См. также

  • Регулярные выражения
  • Именованная группа захвата: (?<name>...)

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Regex_duplicate_capture_group_name

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API