SyntaxError: negated character class with strings in regular expression
The JavaScript exception "negated character class with strings in regular expression" occurs when a v
-mode character class is negated and may be able to match a string (more than one character).
Message
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)
Error type
What went wrong?
In v
mode, character classes are able to match more than 1 character. For example, /[\q{abc}]/v
would match the sequence "abc"
, and /[\p{RGI_Emoji_Flag_Sequence}]/v
would match any character sequence that represents an emoji flag. However, negated character classes [^...]
are not allowed to match strings, so /[^\p{RGI_Emoji_Flag_Sequence}]/v
is invalid, because it's unclear how many characters it should match. For more information, see the v
-mode character class reference.
Examples
Invalid cases
js
/[^\p{RGI_Emoji_Flag_Sequence}]/v;
Valid cases
js
// Matches two characters that are not an emoji flag sequence
/(?!\p{RGI_Emoji_Flag_Sequence})../v;