Java 正規表現の電子メール検証: 正規表現が失敗するのはなぜですか?
電子メール検証の Java 正規表現が常に失敗するという特有の問題が発生しています。 Eclipse では正しく動作するにもかかわらず。この動作は不可解な場合があるため、解決策を詳しく説明します。
提供される正規表現は、一般的に使用される電子メール検証パターンに似ており、大文字の英数字、アンダースコア、ピリオド、またはハイフンの後に「@」記号が続き、さらに英数字、ピリオド、またはハイフンが続き、2 ~ 4 個の大文字で構成されるドメイン コンポーネントで終わる
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!");
ただし、電子メール文字列内の特殊文字が偽装またはエスケープされている可能性があり、この正規表現は失敗しているようです。
より包括的な正規表現を使用した解決策
これに対処するには、電子メールに対してより堅牢な正規表現を利用できます。 validation:
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(); }
この更新された正規表現は、指定された電子メール構造に準拠していますが、さらに特殊文字をより効果的に処理します。
以上がEclipse では動作するにもかかわらず、Java Regex 電子メール検証が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。