语法错误:正则表达式中带字符串的否定字符类
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;