メールの検証: 正規表現の落とし穴
正規表現 (regex) は電子メールの検証によく使用されますが、その制限により不正確な結果が生じる可能性があります。 典型的な正規表現アプローチの弱点を調べてみましょう。
次の一般的な正規表現パターンについて考えてみましょう:
<code>@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"</code>
これは次の照合を試みます:
([w.-] )
: ユーザー名の部分 (例: "example")。([w-] )
: ドメイン (例: "com")。((.(w){2,3}) )$
: トップレベル ドメイン (TLD) – 2 文字または 3 文字。ただし、この正規表現は、「user@[email protected]」などの多くの正当な電子メール アドレスの検証に失敗します。
この正規表現が失敗する理由:
より信頼性の高いアプローチ:
MailAddress
クラスの活用: System.Net.Mail.MailAddress
クラスは、より堅牢なソリューションを提供します。 より多様な電子メール形式を処理し、組み込みのエラー処理が組み込まれています。
MailAddress.TryCreate
(.NET 5 の場合): .NET 5 以降のバージョンでは、 MailAddress.TryCreate
がよりクリーンなアプローチを提供します。成功または失敗を示すブール値を返すため、検証と例外管理が簡素化されます。
要約すると、正規表現は便利ですが、電子メール検証における制限により信頼性が低くなります。 MailAddress
クラスまたは MailAddress.TryCreate
を使用すると、電子メール アドレスを検証するための非常に堅牢かつ正確な方法が提供されます。
以上が正規表現では堅牢な電子メール検証が不十分なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。