正規表現のサンプル一覧

広告
eyecatch

正規表現はアプリケーションなどで利用者が入力した値が想定した形式と一致しているかチェックするためにもよく使用されます。例えば生年月日を入力してもらうテキストボックスでは入力された値が年月日の形式に一致しているのかを正規表現を使ってチェックします。ここではよく使用される正規表現のサンプルの一覧をご紹介します。

正規表現に関する解説は「正規表現で利用できるメタ文字の一覧と使い方」をご参照ください。

(2020 年 02 月 06 日公開 / 2020 年 02 月 06 日更新)

数値の正規表現

色々な数値にマッチする正規表現をみていきます。

10進数

10進数の数値は次のような値となります。

4
10
3328

10進数の数値にマッチする正規表現は次のようになります。

^[0-9]+$

16進数

16進数の数値は次のような値となります。

4
C
2FA

16進数の数値にマッチする正規表現は次のようになります。

^[0-9a-fA^F]+$

2進数

2進数の数値は次のような値となります。

1
101
100101

2進数の数値にマッチする正規表現は次のようになります。

^[01]+$

郵便番号の正規表現

郵便番号は次のような値となります。

000-0000

郵便番号にマッチする正規表現は次のようになります。

^[0-9]{3}-[0-9]{4}$

以下解説と前提条件です。

郵便番号は 3 桁の数字(0-9)、ハイフン(-)、 4 桁の数字(0-9) と続きます。

[0-9]{3}-[0-9]{4}

これに行頭にマッチするキャレット(^)と行末にマッチするドル記号を($)を追加して組み合わせたものが郵便番号を表す正規表現となります。

ドメイン名の正規表現

ドメイン名およびサブドメイン名は次のような値となります。

example.com
sub.example.jp

ドメイン名およびサブドメイン名にマッチする正規表現は次のようになります。

^([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*¥.)+[a-zA-Z]{2,}$

以下解説と前提条件です。

ドメイン名はトップレベルドメイン(一番右側の部分で使用できる文字はアルファベット(a-z)となっており、トップレベルドメイン以外のラベルについては数字(0-9)やハイフン(-)も利用できます。ただしハイフンはラベルの先頭と最後では使用できません。

※ ドメイン名には ASCII 文字だけでなく漢字など色々な言語が使用可能ですが、ここでは考慮に入れていません。

トップレベルドメインについては 2 文字以上、それ以外のラベルについては 1 文字以上という制限を考慮すると、正規表現は次のようになります。

それ以外のラベル部分:
([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*¥.)+

トップレベルドメイン部分:
[a-zA-Z]{2,}

これに行頭にマッチするキャレット(^)と行末にマッチするドル記号を($)を追加して組み合わせたものがドメイン名を表す正規表現となります。

メールアドレスの正規表現

メールアドレスは次のような値となります。

username@example.com

メールアドレスにマッチする正規表現は次のようになります。

^[a-zA-Z0-9_.-]+@([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*¥.)+[a-zA-Z]{2,}$

以下解説と前提条件です。

ローカル部分( "@" よりも前の部分)には仕様上はかなり多くの文字を使用できる(例えば ! や # など)のですが、実際はサービス側で文字の制限を行っているケースが多いです。例えば Gmail のメールアドレスでは使用できる文字はアルファベット(a-z)、数字(0-9)、ピリオド(.)だけです。 Outlook.com の場合はこれに加えてアンダーバー(_)やハイフン(-)も利用可能です。

※ ドットは最初や最後では使用できず、また連続してドットも使用できません。ただ今回はこのチェックは行っていません。

これらの一般的に使われる文字の組み合わせで考えるとローカル部分の正規表現は次のようになります。

[a-zA-Z0-9_.-]+

※ 角括弧[]の中でハイフン(-)を文字としての意味で記述する場合、最初か最後以外の場所に各場合は¥によるエスケープが必要です。

ドメイン名の正規表現は先に解説したものを使います。

^([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*¥.)+[a-zA-Z]{2,}$

ローカル部分とドメイン名を "@" で結び、これに行頭にマッチするキャレット(^)と行末にマッチするドル記号を($)を追加して組み合わせたものがメールアドレスを表す正規表現となります。

IPアドレス(IPv4)の正規表現

IP アドレス( IPv4 )は次のような値となります。

255.255.255.255

IP アドレス( IPv4 )にマッチする正規表現は次のようになります。

^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])¥.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$

以下解説と前提条件です。

IP アドレス( IPv4 )は 0 から 255 までの数字がドット(.)を挟んで 4 回続く形になります。 0 から 255 の数字は 250 から 255、 200 から 249 、100 から 199 、 0 から 99 、にそれぞれ分けて次のように正規表現で表すことができます。

(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])

0 から 255 までの数字を 4 回、それぞれをドット(.)で結び、これに行頭にマッチするキャレット(^)と行末にマッチするドル記号を($)を追加して組み合わせたものが IP アドレス( IPv4 )を表す正規表現となります。

携帯電話の電話番号の正規表現

携帯電話の電話番号は次のような値となります。

070-1234-5678
080-1234-5678
090-1234-5678

携帯電話の電話番号にマッチする正規表現は次のようになります。

^0[789]0-[0-9]{4}-[0-9]{4}$

以下解説と前提条件です。

携帯電話の電話番号は現時点では 090 or 080 or 070 で始まります。この部分の正規表現は次のようになります。

0[789]0

その後は数字(0-9)が 4 桁続くものが 2 回現れます。

[0-9]{4}

先頭部分と数字 4 桁の部分が 2 回、それぞれをハイフン(-)で結び、これに行頭にマッチするキャレット(^)と行末にマッチするドル記号を($)を追加して組み合わせたものが携帯の電話番号を表す正規表現となります。

日付の正規表現

日付は次のような値( yyyy/mm/dd の形式で一桁の場合はゼロパディングを行う場合)となります。

2020-01-31

日付にマッチする正規表現は次のようになります。

^[0-9]{4}/(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])$

以下解説と前提条件です。

年の部分は 0000 から 9999 までなので数値(0-9)が 4 つ連続することになります。この部分の正規表現は次のようになります。

[0-9]{4}

月の部分は 01 から 12 までです。00 から 09 まで、または 10 から 12 までとなります。この部分の正規表現は次のようになります。

(0[1-9]|1[0-2])

日の部分は 01 から 31 までです。00 から 09 まで、または 10 から 29 まで、または 30 か 31 となります。この部分の正規表現は次のようになります。

(0[1-9]|[12][0-9]|3[01])

年、月、日の部分をそれぞれをスラッシュ(/)で結び、これに行頭にマッチするキャレット(^)と行末にマッチするドル記号を($)を追加して組み合わせたものが日付を表す正規表現となります。

※ 2月30日 など存在しない日付のチェックは行っていません。

時刻の正規表現

時刻は次のような値( hh:mm:ss の形式で一桁の場合はゼロパディングを行う場合、 24 時間制)となります。

08:25:41
21:06:18

時刻にマッチする正規表現は次のようになります。

^([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$

以下解説と前提条件です。

時間の部分は 00 から 23 までなので 00 から 19 まで、または 20 から 23 までとなります。この部分の正規表現は次のようになります。

([01][0-9]|2[0-3])

分および秒の部分は 00 から 59 までとなります。この部分の正規表現はそれぞれ次のようになります。

[0-5][0-9]

時間、分、秒の部分をそれぞれをコロン(:)で結び、これに行頭にマッチするキャレット(^)と行末にマッチするドル記号を($)を追加して組み合わせたものが時刻を表す正規表現となります。

-- --

よく使用される正規表現のサンプルの一覧をご紹介しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。