search
LoginSignup
365

More than 3 years have passed since last update.

posted at

updated at

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

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に含むメールアドレスを拒否するサービスがこの世から絶滅しますように。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
365