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