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