ホームページ > バックエンド開発 > C++ > 正規表現では堅牢な電子メール検証が不十分なのはなぜですか?

正規表現では堅牢な電子メール検証が不十分なのはなぜですか?

Barbara Streisand
リリース: 2025-01-24 09:01:08
オリジナル
558 人が閲覧しました

Why Are Regular Expressions Insufficient for Robust Email Validation?

メールの検証: 正規表現の落とし穴

正規表現 (regex) は電子メールの検証によく使用されますが、その制限により不正確な結果が生じる可能性があります。 典型的な正規表現アプローチの弱点を調べてみましょう。

次の一般的な正規表現パターンについて考えてみましょう:

<code>@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"</code>
ログイン後にコピー

これは次の照合を試みます:

  • ([w.-] ): ユーザー名の部分 (例: "example")。
  • ([w-] ): ドメイン (例: "com")。
  • ((.(w){2,3}) )$: トップレベル ドメイン (TLD) – 2 文字または 3 文字。

ただし、この正規表現は、「user@[email protected]」などの多くの正当な電子メール アドレスの検証に失敗します。

この正規表現が失敗する理由:

  1. 制限付き TLD サポート: このパターンは、「.museum」や「.technology」などの長い TLD を除き、2 文字または 3 文字の TLD (「.com」、「.net」) のみを受け入れます。
  2. エラー処理: 正規表現だけでは潜在的な例外を処理できません。 電子メール アドレスの形式が正しくないと、適切なエラー処理 (try-catch ブロック) が行われないとクラッシュが発生する可能性があります。

より信頼性の高いアプローチ:

  1. MailAddress クラスの活用: System.Net.Mail.MailAddress クラスは、より堅牢なソリューションを提供します。 より多様な電子メール形式を処理し、組み込みのエラー処理が組み込まれています。

  2. MailAddress.TryCreate (.NET 5 の場合): .NET 5 以降のバージョンでは、 MailAddress.TryCreate がよりクリーンなアプローチを提供します。成功または失敗を示すブール値を返すため、検証と例外管理が簡素化されます。

要約すると、正規表現は便利ですが、電子メール検証における制限により信頼性が低くなります。 MailAddress クラスまたは MailAddress.TryCreate を使用すると、電子メール アドレスを検証するための非常に堅牢かつ正確な方法が提供されます。

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

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