语法错误:正则表达式中带字符串的否定字符类

JavaScript 异常“正则表达式中带有字符串的否定字符类”发生在 v 模式字符类 被否定,并且可能能够匹配字符串(多个字符)时。

消息

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)

错误类型

哪里出了问题?

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;

另请参阅