SyntaxError: negated character class with strings in regular expression

v 模式字元類 被否定並且可能匹配字串(多個字元)時,會發生 JavaScript 異常“正則表示式中帶字串的否定字元類”。

訊息

SyntaxError: Invalid regular expression: /[^\p{RGI_Emoji_Flag_Sequence}]/v: Negated character class may contain strings (V8-based)
SyntaxError: negated character class with strings in regular expression (Firefox)
SyntaxError: Invalid regular expression: negated class set may contain strings (Safari)

錯誤型別

SyntaxError

哪裡出錯了?

v 模式下,字元類能夠匹配一個以上的字元。例如,/[\q{abc}]/v 將匹配序列 "abc",而 /[\p{RGI_Emoji_Flag_Sequence}]/v 將匹配任何表示表情符號旗幟的字元序列。然而,否定字元類 [^...] 不允許匹配字串,因此 /[^\p{RGI_Emoji_Flag_Sequence}]/v 是無效的,因為它不清楚應該匹配多少個字元。有關更多資訊,請參閱 v 模式字元類 參考。

示例

無效案例

js
/[^\p{RGI_Emoji_Flag_Sequence}]/v;

有效情況

js
// Matches two characters that are not an emoji flag sequence
/(?!\p{RGI_Emoji_Flag_Sequence})../v;

另見