首页 >Java >java教程 >为什么我的 Java 正则表达式不匹配电子邮件地址?

为什么我的 Java 正则表达式不匹配电子邮件地址?

Susan Sarandon
Susan Sarandon原创
2024-12-06 14:49:12673浏览

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