コンテンツへスキップ
uencoder

堅牢なメールアドレス検証正規表現を書く

メールアドレス検証の正規表現は、RFC 5322 のせいで悪名高いほど複雑です。よくある用途に実用的なパターンと、その限界を学びましょう。

  1. 1

    メールアドレスの検証は複雑です。RFC 5322 は多くの有効な形式 (コメント、引用文字列、括弧内の IP アドレス) を許しているからです。実用的な正規表現は、厳密さと使いやすさのバランスを取ります。ほとんどのアプリケーションでは、中程度のパターンで十分です:^[^\s@]+@[^\s@]+\.[^\s@]+$ は基本構造 (空でない [email protected]) を確認します。

  2. 2
    正規表現テスター →

    メールのパターンをテストします。単純な ^[^\s@]+@[^\s@]+\.[^\s@]+$ は明白なエラーを捕まえます。中程度の ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ はより具体的です。有効なメール ([email protected]、[email protected]) と無効なメール (@ なし、スペース、TLD なし) の両方でテストしてください。

  3. 3
    テキストメールアドレス抽出 →

    テキストからメールアドレスを抽出します。このツールはテキストブロック内のメールらしいパターンをすべて見つけます。自分の正規表現が同じメールを見つけるかどうかの検証に使ってください。結果を比較して正しさを確認します。

よくある質問

メールの検証に正規表現を使うべきですか?
基本的な構文チェックなら、単純な正規表現で十分です。RFC 5322 に完全準拠するには、正規表現は非現実的です (パターンが膨大になります)。最良の方法:構文には単純な正規表現を使い、その後、確認メールを送信してアドレスが存在し、アクセス可能であることを確認します。メールが配送可能かを検証できる正規表現は存在しません。
完璧なメール正規表現とはどのようなものですか?
完璧なメール正規表現は存在しません。RFC 5322 は、実用的な正規表現では処理できない形式を許しています (例:"very.(),:;<>[]\".VERY.\"very@\ \"very\".unusual"@strange.example.com)。RFC 5322 の正規表現は 6KB を超えます。ライブラリか、単純なパターン + 確認メールの組み合わせを使ってください。

このタスクを解決するワークフロー

関連ツール