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

js
/\b+/; // \b is a word boundary assertion, it doesn't consume characters
/(*hello*)/;

Gültige Fälle

js
/b+/; // b is a character, it can be repeated
/(\*hello\*)/; // Escape the asterisks to match them literally

Siehe auch