正確な電子メール検証には正規表現で十分ですか?

Susan Sarandon
リリース: 2024-11-14 22:46:02
オリジナル
587 人が閲覧しました

Is Regex Enough for Accurate Email Validation?

電子メール検証における正規表現の落とし穴

正規表現を使用した電子メール アドレスの検証は、特にサブドメイン アドレスの場合、難しい作業になる可能性があります。この課題に対処するために、正規表現のみに依存することの限界を調べてみましょう。

正規表現検証の制限

電子メール アドレスの構文の正確性 (例: 存在するかどうか) を検証する際@ と .) の場合、正規表現ではタイプミスが考慮されず、アドレスが実際に存在するかどうかが確認されません。これらの問題を解決するには、より広範なチェック、つまり次のチェックが必要です。

  1. タイプミス: 構文的に有効な電子メール アドレスでも、タイプミスが発生する可能性があります。このようなエラーを排除するには、手動による検証が必要です。
  2. 存在検証: validate_email パッケージを通じて SMTP サーバーに接続すると、電子メール アドレスの存在を検証できます。ただし、このアプローチでは、アドレスが意図した受信者に属していることは保証されません。

推奨される単純なチェック

正規表現検証の制限を考慮して、基本的なチェックを行います。多くの場合、一般的なユーザー エラーを識別するだけで十分です。

[^@]+@[^@]+\.[^@]+
ログイン後にコピー

この正規表現は、@ 記号が 1 つと少なくとも 1 つ存在することを検証します。 @ の後ろ

コードでの正規表現の使用

上記の正規表現をコードに組み込むには、Python の re モジュールを利用します。

import re

if not re.match(r"[^@]+@[^@]+\.[^@]+", email):
    # Handle invalid email address
ログイン後にコピー

文字を 2 回エスケープするのを避けるために、Python の生の文字列リテラルの先頭に r を付けて使用していることに注意してください。複雑な正規表現の場合は、最初にコンパイルすることを検討してください:

EMAIL_REGEX = re.compile(r"[^@]+@[^@]+\.[^@]+")

if not EMAIL_REGEX.match(email):
    # Handle invalid email address
ログイン後にコピー

以上が正確な電子メール検証には正規表現で十分ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート