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("|"),
);