Home > .NETメモ | 備忘録 > 電子メールアドレスの妥当性チェック

電子メールアドレスの妥当性チェック

VB.NETで書いたメール送信ソフトに電子メールアドレスの妥当性チェックをする必要があったので調べてみた。
何件か使えそうな情報があったが、以下の記事がわかりやすい。


メールアドレスの完璧な表現をチェックできるわけではないが、申込書やWebフォームで入力される形式としては
実用上の問題はないと思う。以下、記事の内容をもとにした表現のメモ。

Regex.IsMatch(email, “^[\w\-][\w\.\-]*@([\w\-]+\.)+[\w\-]+$”)

\wはアルファベットの大文字、小文字、数字、アンダーバー(_)と一致する。
実は、このメタ文字は全角にもマッチする。そこで、半角にマッチさせてたい場合は、メタ文字部分を半角文字に展開して、

「\w」を「A-Za-z0-9_」としてやる。、展開結果を反映すると、

Regex.IsMatch(txtMail.Text, “^[A-Za-z0-9_\-][A-Za-z0-9_\.\-]*@([A-Za-z0-9_\-]+\.)+[A-Za-z0-9_\-]+$”)

となる。
なお、一部の携帯電話のメールアドレスで利用できるピリオドを使ったアドレスについては注意が必要。
RFCとしては正しくないが、「.」から始まるアドレスをマッチさせたい場合は、こんな感じになる。

Regex.IsMatch(txtMail.Text, “^[A-Za-z0-9_\.\-]*@([A-Za-z0-9_\-]+\.)+[A-Za-z0-9_\-]+$”)

文字数のチェックがないので、本当はまずい。

今は使えないかもしれないが、携帯アドレスには、ピリオドの使い方に不適切な形式があったようだ。
  • ピリオドで始まるアドレス
  • @の左側(直前)がピリオドで終わるアドレス
  • ピリオドが連続するアドレス

RFCとしては使わないのが正しいようだ。


[携帯電話会社のメールアドレス変更に関する情報(参考)]


検索していると、各携帯会社のまとめブログを発見。全体が読めてわかりやすい。
NTTドコモって2009年4月からRFC準拠になってたんだ。