SyntaxError: invalid regexp group
當序列 (? 沒有以有效的組語法開頭時,會發生 JavaScript 異常“invalid regexp group”。以 (? 開頭的公認組語法包括:
(?:表示非捕獲組(?=表示正向先行斷言(?!表示負向先行斷言(?<=表示正向後行斷言(?<!表示負向後行斷言(?<表示命名捕獲組(?-i:、(?i:、(?m:、(?ims-:等表示修飾符
(? 後跟任何其他字元都會導致此錯誤。
訊息
SyntaxError: Invalid regular expression: /(?1)/: Invalid group (V8-based) SyntaxError: invalid regexp group (Firefox) SyntaxError: Invalid regular expression: unrecognized character after (? (Safari)
錯誤型別
SyntaxError
哪裡出錯了?
? 不是原子,因此它出現在捕獲組的開頭是沒有意義的(? 是一個量詞,應該放在原子之後)。也許您想字面匹配 ? 字元,在這種情況下,您應該用反斜槓 (\?) 對其進行轉義。也許您記錯了正則表示式語法,並且打算使用上面列出的公認組語法之一。也許您正在使用當前 JavaScript 引擎不支援的功能。
示例
無效案例
js
/Hello(?|!)/;
// This is Perl syntax
/(?[\p{Thai}&\p{Digit}])/;
有效情況
js
/Hello(\?|!)/;
// This is JavaScript syntax for character set operations
/[\p{Thai}&&\p{Digit}]/v;