ドメイン名およびメールアドレスの正規表現

広告

正規表現のサンプルの中でドメイン名およびメールアドレスにマッチする正規表現について解説します。

ドメイン名にマッチする正規表現

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

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,}$

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

-- --

正規表現のサンプルの中でドメイン名およびメールアドレスにマッチする正規表現について解説しました。

( Written by Tatsuo Ikura )

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

著者 / TATSUO IKURA

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