SyntaxError: invalid range in character class
当正则表达式中的字符类使用范围,但该范围的起始值大于结束值时,会发生 JavaScript 异常“字符类中的范围无效”。
消息
SyntaxError: Invalid regular expression: /[2-1]/: Range out of order in character class (V8-based) SyntaxError: invalid range in character class (Firefox) SyntaxError: Invalid regular expression: range out of order in character class (Safari)
错误类型
SyntaxError
哪里出错了?
在字符类中,你可以用连字符 - 连接两个字符,以表示基于其 Unicode 码点的字符的包含性区间。例如,[a-z] 匹配任何小写字母。然而,如果范围的结束值小于起始值,则该范围不能匹配任何内容,并且很可能是一个错误。
示例
无效案例
js
/[9-1]/; // The range is out of order
/[_-=]/; // _ has value 95, = has value 61
有效情况
js
/[1-9]/; // Swap the range
/[_\-=]/; // Escape the hyphen so it matches the literal character