首頁 >Java >java教程 >為什麼我的 Java 正規表示式不符合電子郵件地址?

為什麼我的 Java 正規表示式不符合電子郵件地址?

Susan Sarandon
Susan Sarandon原創
2024-12-06 14:49:12648瀏覽

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 正規表示式不符合電子郵件地址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn