Java Regex 電子メール検証に関するトラブル
正規表現を使用して電子メール アドレスを検証しようとしたときに、Java ユーザーが次の問題に遭遇しました。正しい形式の電子メール アドレスであっても検証は失敗します。この正規表現は、Eclipse 内の「検索と置換」機能で使用すると電子メール アドレスと一致しますが、Java の Pattern クラスや Matcher クラスで使用すると失敗します。
問題の正規表現は次のとおりです:
\b[A-Z0-9._%-] @[A-Z0-9.-] \.[A-Z]{2,4}\b
ユーザーは Java で次のコードを使用しました:
Pattern p = Pattern.compile("\\b[A-Z0-9._%-] @[A-Z0-9.-] \\.[A-Z]{2,4}\\b"); Matcher m = p.matcher("[email protected]"); if (m.find()) System.out.println("Correct!");
ただし、電子メール アドレスが有効か無効かに関係なく、正規表現の検証は失敗します。
考えられる解決策
推奨される解決策は、同様の正規表現を使用する次の Java コードを利用することです:
public static final Pattern VALID_EMAIL_ADDRESS_REGEX = Pattern.compile("^}[A-Z0-9._% -] @[A-Z0-9.-] \\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE); public static boolean validate(String emailStr) { Matcher matcher = VALID_EMAIL_ADDRESS_REGEX.matcher(emailStr); return matcher.matches(); }
このコードは電子メール アドレスを確実に検証すると報告されています。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3