Help us understand the problem. What is going on with this article?

メールアドレスを表す現実的な正規表現

More than 1 year has passed since last update.

RFC5322で定義されているメールアドレスの書式を完全にサポートすることは簡単ではありませんが、適当な正規表現を紹介してOKとする記事があとを絶ちません。

HTML5には input[type=email] という要素があり、メールアドレスの書式チェックをクライアントサイドで行えるようになっています。このチェックでは、下記の(Perl5の記法にならった)正規表現を使っています。

/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/

注釈に

この要件は電子メールの構文を定義するRFC5322に対して 意図的に違反 (willful violation) している。

とあるように、仕様を完全に満足する正規表現ではありませんので、電子メールヘッダを解析するような本格的な用途に対しては不十分ですが、WEBサービスに対するユーザー入力を検証する程度であれば、この正規表現を採用しておくのが無難ではないでしょうか。

そして、せめて + をlocal-partに含むメールアドレスを拒否するサービスがこの世から絶滅しますように。

sakuro
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away