正規表現:文字数や、文字数の範囲を指定する表現

最終更新:2021-06-16 by Joe

正規表現で文字数や、文字数の範囲を指定してマッチングを行う方法と、サンプルをまとめました

正規表現で文字数を指定する方法

正規表現において、文字数を指定するには、繰り返し回数を指定する「量指定子」を用いて表現できます。

文字数を指定する

文字数が固定されている場合、一定回数の繰り返しを表現する「{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}

参考情報

量指定子については、こちらの記事も御覧ください。

こちらは、文字の繰り返しについてのまとめです。