SyntaxError: ungültiger Name der Erfassungsgruppe im regulären Ausdruck

Die JavaScript-Ausnahme "ungültiger Name der Erfassungsgruppe im regulären Ausdruck" tritt auf, wenn eine benannte Erfassungsgruppe oder eine benannte Rückreferenz einen ungültigen Bezeichner enthält.

Nachricht

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

Fehlerart

Was ist schiefgelaufen?

Jede benannte Erfassungsgruppe muss einen Namen haben, der ein gültiger Bezeichner ist. Es können keine beliebigen Zeichenfolgen als Gruppenbezeichner verwendet werden.

Beispiele

Ungültige Fälle

js
/(?<1>\d+) (?<2>\d+)/;

Oder Sie könnten den regulären Ausdruck dynamisch erstellen:

js
const tokenTypes = {
  "number literal": /\d+/,
  "string literal": /".+?"/,
  identifier: /[a-zA-Z_]\w*/,
};

const tokenPattern = new RegExp(
  Object.entries(tokenTypes)
    .map(([name, pattern]) => `(?<${name}>${pattern.source})`)
    .join("|"),
);

Gültige Fälle

js
/(?<group1>\d+) (?<group2>\d+)/;

Wenn der reguläre Ausdruck dynamisch erstellt wird, stellen Sie sicher, dass alle Namen gültige Bezeichner sind. Zum Beispiel:

js
const tokenTypes = {
  numberLiteral: /\d+/,
  stringLiteral: /".+?"/,
  identifier: /[a-zA-Z_]\w*/,
};

const tokenPattern = new RegExp(
  Object.entries(tokenTypes)
    .map(([name, pattern]) => `(?<${name}>${pattern.source})`)
    .join("|"),
);

Siehe auch