正規表現で文字数や、文字数の範囲を指定してマッチングを行う方法と、サンプルをまとめました
目次
正規表現で文字数を指定する方法
正規表現において、文字数を指定するには、繰り返し回数を指定する「量指定子」を用いて表現できます。
文字数を指定する
文字数が固定されている場合、一定回数の繰り返しを表現する「{N}」を使って文字数を指定できます。
// 8文字の半角数字の表現
[0-9]{8}
// 4文字の半角アルファベット
[a-z]{4}
文字数の範囲を指定する
上記の「{}」を利用して、文字数の範囲を指定することもできます。
文字数の範囲の指定
範囲の指定にはカンマを利用して「{N,M}」と言った記述を利用します。(2019-4-27 訂正:ご報告ありがとうございました )
// 4文字以上、9文字以下の半角数字の表現
[0-9]{4,9}
// 2文字か3文字の半角アルファベット
[a-zA-Z]{2,3}
「〜文字以上」の指定
同様の括弧の表現で、最大値の指定を省いて最小のみを指定すれば「〜文字以上」と言った指定が可能です。
// 4文字以上の半角数字の表現
[0-9]{4,}
「〜文字以下」の指定
同様に最小値の指定を省けば、「〜文字以下」の表現となります。
// 10文字以下の半角数字の表現
[0-9]{,10}
最長マッチ・最短マッチを意識する
文字数の範囲において「〜以上の文字数だけど、できるだけ少ない文字数をマッチしたい」というケースは注意が必要です。上記の量指定子をつかった正規表現では、できるだけ多い文字列をマッチする仕様だからです。最短をマッチするには、しばしば「?」を加えた量指定子が用いられます
// 最短マッチ
[0-9]{4,10}?
最短マッチについては、こちらの記事を御覧ください。
文字数を指定する表現のサンプル集
文字数を使ったサンプル集です。
6文字以上、10文字以下の半角英数字
パスワードのルールで使いそうな表現です。
文字クラスは、ASCIIコードの範囲を指定できます。半角英数字は、「!」から「~」までを含めれば、すべて含められるでしょう。
//6文字以上、10文字以下の半角英数字
[!-~]{6,10}
ASCIIコード一覧に関してはこちらをご覧ください。
携帯電話番号の表現
こちらはハイフンの有り無しを両方許容します。090, 080, 050のいずれかで始まります。
// 携帯電話番号
0[589]0-?[0-9]{4}-?[0-9]{4}
参考情報
量指定子については、こちらの記事も御覧ください。
こちらは、文字の繰り返しについてのまとめです。