SyntaxError: 字符类中范围无效
当正则表达式中的 字符类 使用范围,但范围的起始位置大于结束位置时,就会发生 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)
错误类型
哪里出错了?
在字符类中,可以使用连字符 -
将两个字符连接起来,根据它们的 Unicode 代码点表示一个包含字符的区间。例如,[a-z]
匹配任何小写字母。但是,如果范围的结束位置小于起始位置,则该范围无法匹配任何内容,这很可能是一个错误。
示例
无效情况
js
/[2-1]/; // The range is out of order
/[_-=]/; // _ has value 95, = has value 61
有效情况
js
/[1-2]/; // Swap the range
/[_\-=]/; // Escape the hyphen so it matches the literal character