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;

另见