ホームページ > Java > &#&チュートリアル > Java Regex が電子メール アドレスと一致しないのはなぜですか?

Java Regex が電子メール アドレスと一致しないのはなぜですか?

Susan Sarandon
リリース: 2024-12-06 14:49:12
オリジナル
630 人が閲覧しました

Why Doesn't My Java Regex Match Email Addresses?

Java 正規表現による電子メール検証

質問

ユーザーは、Java での電子メール検証に正規表現を使用する際に問題が発生しました。 Eclipse 内の「検索と置換」操作で正規表現が一致しているにもかかわらず、Java 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 コードで使用されているものと似ています。ただし、いくつかの重要な違いがあります。

  • 提供される正規表現では、 [A-Z0-9._%-] などの中括弧を含む文字クラスが使用されます。 Java では、これらは [A-Z0-9._%-] としてエスケープする必要があります。
  • 提供された正規表現は、リテラル文字としてドットを使用します。これは \ としてエスケープする必要があります。 Java では二重バックスラッシュを使用します。
  • 提供された正規表現では、単語の先頭と一致する特殊文字 b が使用されます。これは電子メールの検証には必要ないため、削除できます。

次の Java コードは、これらの問題に対処するために変更されました:

Pattern p = Pattern.compile("[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}");
Matcher m = p.matcher("[email protected]");

if (m.find())
    System.out.println("Correct!");
ログイン後にコピー

これらの変更により、正規表現は Java の電子メール アドレスと一致するようになります。

以上がJava Regex が電子メール アドレスと一致しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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