文系プログラマー「いお」が語る

主にプログラミング関連の記事を書いています。

【Flutter】【エラー対応】「range out of order in character class[***]」が発生する原因と対処法

今回はFlutterアプリ開発時に遭遇することのある「range out of order in character class[***]」というエラーについて原因と対処法を解説します。(***には英数字や記号等が入る)

 

この記事で分かること

✅「range out of order in character class ~」が発生する理由
✅「range out of order in character class ~」の具体例
✅「range out of order in character class ~」の対処方法

 

目次

 

「range out of order in character class ~」エラーが発生する理由

結論から言うと、このエラーは正規表現の範囲として不正な値が定義された場合に発生します。

 

具体例

エラー例①

RegExp(r'[a-Z@_.-]')//エラー

正しくは、

RegExp(r'[a-zA-Z@_.-]')//正しい

大文字と小文字を混在させるときは「a-Z」のようにまとめて書くことはできません。「a-zA-Z」のように指定します。

 

エラー例②

RegExp(r'[9-0@_.-]')//エラー

正しくは、

RegExp(r'[0-9@_.-]')//正しい

数字を指定するときは「0-9」のように常に小さい数から大きい数の順に指定する必要があります。

 

エラー例③

RegExp(r'[a-zA-Z0-9@_-.]')//エラー

正しくは、

RegExp(r'[a-zA-Z0-9@_\-.]')//正しい

「-(ハイフン)」は正規表現の中で特殊な意味を持ちます。そのため[]の中で「-(ハイフン)」を記述する場合はエスケープする必要があります。具体的には「\-」と記述します。

 

「range out of order in character class ~」エラーの対処法

対処法としてはシンプルで正確な正規表現を記述することです。
正規表現については以下がわかりやすいです!
https://userweb.mnet.ne.jp/nakama/

 

おわりに

今回は「range out of order in character class[***]」エラーが発生する原因と対処法についてでした。本記事の例のように正規表現で表現することはよくあるのでぜひ覚えておきましょう!

最後までお読みいただきありがとうございました!