1. ホーム
  2. java

[解決済み] Java 正規表現メール

2022-04-28 17:58:52

質問内容

まず最初に、電子メールに正規表現を使用することが推奨されないことは知っていますが、これをテストする必要があります。

こんな正規表現があります。

\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!");

しかし、この正規表現はメールがウェルフォームであるかどうかに関係なく失敗します。Eclipseで検索と置換を行うと、同じ正規表現でうまく動作します。

何か思い当たることはありますか?

ありがとうございます。

解決方法は?

参考までに、私たちがメールアドレスの検証に使用しているJavaのコードを紹介します。Regexpの部分は非常によく似ています。

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.find();
}

かなり確実に動作する。