SyntaxError: nothing to repeat

JavaScript 異常“nothing to repeat”(或“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)

錯誤型別

SyntaxError

哪裡出錯了?

量詞用於指定字元或字元組在正則表示式中可以出現的次數。例如,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

另見