SyntaxError: invalid class set operation in regular expression
The JavaScript exception "invalid class set operation in regular expression" occurs when a double punctuator sequence appears in a v
-mode character class but it is not recognized by the syntax.
Message
SyntaxError: Invalid regular expression: /[&&]/v: Invalid set operation in character class (V8-based) SyntaxError: invalid class set operation in regular expression (Firefox) SyntaxError: Invalid regular expression: invalid operation in class set (Safari)
Error type
What went wrong?
There are three possible ways this could happen:
- You are trying to use
&&
or--
, but the syntax is wrong. Each of these operators must join two characters or character sets. - You are mixing operators on the same level. For example,
[\w&&[A-z]--_]
is invalid because it uses&&
and--
on the same level. You need to use nested character classes to disambiguate, such as[\w&&[[A-z]--_]]
. Note that the union operation uses an operator that has no text; for example,[AB&&C]
is invalid becauseA
andB
are implicitly joined by the union operator. You need to use[A[B&&C]]
instead. - You are using a double punctuator sequence that's not
&&
or--
. These sequences are reserved for future syntax extensions. They include:&&
,!!
,##
,$$
,%%
,**
,++
,,,
,..
,::
,;;
,<<
,==
,>>
,??
,@@
,^^
,``
,~~
. However, these sequences don't make much sense anyway, and can either be replaced with a single character or cause two adjacent ranges to be merged.