SyntaxError: nothing to repeat
The JavaScript exception "nothing to repeat" or "invalid quantifier in regular expression" occurs when aquantifier in a regular expression is applied to nothing or applied to anassertion.
Message
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)
Error type
What went wrong?
Quantifiers are used to specify how many times a character or group of characters can appear in a regular expression. For example,a{3}
matches the charactera
exactly three times. Therefore, if the thing preceding the quantifier is not something that matches characters, the quantifier is invalid. For example: quantifiers at the start of acapturing group, at the start of adisjunction alternative, etc., cannot repeat anything.Assertions don't consume characters, so it also doesn't make sense to repeat them.
InUnicode-unaware mode, there's a deprecated syntax that allows thelookahead assertions to be quantified. This is a deprecated syntax and you should not rely on it.
Examples
Invalid cases
/\b+/; // \b is a word boundary assertion, it doesn't consume characters/(*hello*)/;
Valid cases
/b+/; // b is a character, it can be repeated/(\*hello\*)/; // Escape the asterisks to match them literally