【Java初心者向け】メールアドレスの正規表現の書き方まとめ

メールアドレスの正規表現
  • このエントリーをはてなブックマークに追加
  • Pocket

メールアドレスは正規表現でよくチェックするもののひとつだろう。

JavaやPHPなどを含めたプログラミングごとの正規表現の書き方と、実際のサンプルプログラムを用意してみた。参考にしていただければと思う。

正規表現によるメールアドレスの扱い方

正規表現を使うと、メールアドレスのチェックをしたり、テキストの中からメールアドレスを抽出したりすることができる。

メールアドレス

最初に、対象となるメールアドレスはどのような仕様に基づいているかを確認しておこう。

メールアドレスに関して最新の仕様と言えそうなものが、RFC 5322 (Internet Message Format)の「3.4.1.  Addr-Spec Specification」に定義されている。厳密にこの仕様を正規表現で実現したいのであれば、最新の仕様をじっくり読んで理解したうえで独自に正規表現を定義してください。また、@の前に「.」を許すような仕様は今回含んでいません。

ここでは、RFC 5322仕様の中の「dot-atom」に記載された仕様に従ってメールアドレスの形式を説明している。

RFC 5322に規定されているメールアドレスの形式は次の通りです。「@」を挟んでlocal-partとdomainの二つの部分に分かれている。

基本形式 local-part @ domain

使える文字

「domain」も、「local-part」で使用可能な文字とは、以下の文字である。

「local-part」は、一文字以上の使用可能文字である。さらに、「.」に続けて一文字以上の使用可能文字をセットとして複数追加することができる。しかし、「.」だけを最後の文字として追加することはできない。

「domain」も、「local-part」と同じ規則が適用される。

正規表現

では、このメールアドレスの仕様に基づいた正規表現はどうなるか見てみよう。メールアドレスの正規表現は以下のようになる。とりあえずJavaのバージョンだ。

この正規表現は、複雑なのでどのような構造になっているかを説明しておく。

aTextが使用可能な文字の正規表現である。そのaTextによってドッドを含む文字列の正規表現dotAtomを作る。dotAtomの先頭は一文字以上のaTextである。最終的にメールアドレスの正規表現はdotAtomによって定義される構造になっている。

よくわからなければ、はじめはコピーアンドペーストで使っていただいて構わない。また、もっと簡単な制限をかけたり、もっとしっかりと制限をかけたりということもできる。

メールアドレスで使える文字も少しずつ変わっていっているので、ある程度適切な緩めの表現を使うのがいいだろう。

各プログラミング言語における正規表現表記

この比較表は、Java以外のプログラミング言語で東京の固定メールアドレスの正規表現を扱うとどうなるかを示している。

言語

正規表現

Java

Ruby

(Javaとほぼ同じだが、「/」を「\/」とする必要がある。)

PHP

(Javaと同じだが、「/」で挟まれている。また、「/」を「\/」とする必要がある。)

C/C++

(Javaとほぼ同じだが、「\w」を「[:w:]」に置き換える必要がある。)

メールアドレスをチェックするサンプルプログラム

それでは、実際にサンプルプログラムを確認してみよう。

このJavaのサンプルプログラムでは、メールアドレスが形式に合致しているかどうか正規表現を使ってチェックしている。メールアドレス「abc.def@efg.com」については、アドレスが正しい場合だけでなく、誤った場合に不正なアドレスとして検出されることも確認している。

実行結果

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

  • [1] メソッドcheckRightMailAddresses(正しいメールアドレスのチェック)を呼び出す。
  • [2] メソッドcheckWrongMailAddresses(誤ったメールアドレスのチェック)を呼び出す。
  • [3] メソッドcheckRightMailAddressesを定義する。
  • [4] 「正しいメールアドレス」を表示する。
  • [5]-[7] 以下のメールアドレスをメソッドcheckMailAddressByRegularExpressionの引数として渡し、チェックする
  • [9] メソッドcheckMailAddressesを定義する。
  • [10] 「誤ったメールアドレス」を表示する。
  • [20] メソッドcheckMailAddressByRegularExpressionを定義する。
  • [21] 変数resultを定義する。
  • [22] aTextに使用可能な文字の正規表現を代入する。
  • [23] aTextによってドッドを含む文字列の正規表現を作り、dotAtomに代入する。
  • [24] dotAtomによってメールアドレスの正規表現を作り、メールアドレスの正規表現に代入する。
  • [22]-[26] メソッドcheckMailAddressを呼び出し、メールアドレスaddressを正規表現でチェックする。
  • [27] 「不正なメールアドレス:」に引数の「メールアドレス」を加えて表示する。
  • [40] メソッドcheckMailAddressを定義する。
  • [41] 指定された正規表現を持つPatternのインスタンスpatternを生成する。
  • [42] メールアドレスaddressを引数に指定してpatternからmatcherを取得する。
  • [43][44][45] メールアドレスが正規表現に一致していれば、メールアドレスを表示し、trueを戻す。
  • [46] falseを戻す。

まとめ

このページではメールアドレスの正規表現についてまとめてみた。

よく使うものだが、覚える必要はない。使いたくなったら、閲覧に来ていただければと思う。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する