SyntaxError: nothing to repeat
Die JavaScript-Ausnahme "nothing to repeat" oder "invalid quantifier in regular expression" tritt auf, wenn ein Quantifizierer in einem regulären Ausdruck auf nichts angewandt wird oder auf eine Assertion angewandt wird.
Meldung
SyntaxError: Invalid regular expression: /\b+/: Nothing to repeat (V8-based) SyntaxError: Invalid regular expression: /(?=)+/u: Invalid quantifier (V8-based) SyntaxError: nothing to repeat (Firefox) SyntaxError: invalid quantifier in regular expression (Firefox) SyntaxError: Invalid regular expression: nothing to repeat (Safari)
Fehlertyp
Was ist schiefgelaufen?
Quantifizierer werden verwendet, um anzugeben, wie oft ein Zeichen oder eine Gruppe von Zeichen in einem regulären Ausdruck erscheinen kann. Zum Beispiel entspricht a{3}
dem Zeichen a
genau dreimal. Wenn also das, was dem Quantifizierer vorausgeht, nichts ist, das Zeichen übereinstimmt, ist der Quantifizierer ungültig. Zum Beispiel: Quantifizierer am Anfang einer Erfassungsgruppe, am Anfang einer Disjunktionsalternative, usw., können nichts wiederholen. Assertions konsumieren keine Zeichen, daher macht es auch keinen Sinn, sie zu wiederholen.
Im Unicode-unaware mode gibt es eine veraltete Syntax, die es zulässt, dass Lookahead-Assertions quantifiziert werden. Dies ist eine veraltete Syntax und Sie sollten sich nicht darauf verlassen.
Beispiele
Ungültige Fälle
/\b+/; // \b is a word boundary assertion, it doesn't consume characters
/(*hello*)/;
Gültige Fälle
/b+/; // b is a character, it can be repeated
/(\*hello\*)/; // Escape the asterisks to match them literally