SyntaxError: nothing to repeat

当正则表达式中的量词应用于空内容或应用于断言时,就会发生 JavaScript 异常“nothing to repeat”或“invalid quantifier in regular expression”。

消息

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)

错误类型

哪里出错了?

量词用于指定字符或字符组在正则表达式中可以出现的次数。例如,a{3} 匹配字符 a 恰好三次。因此,如果量词前面的内容不是匹配字符的内容,则量词无效。例如:捕获组开头、析取备选开头等的量词无法重复任何内容。断言不消耗字符,因此重复它们也没有意义。

不区分 Unicode 的模式下,有一种已弃用的语法允许对前瞻断言进行量化。这是一种已弃用的语法,您不应依赖它。

示例

无效情况

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

有效情况

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

另请参阅