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

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

Susan Sarandon
发布: 2024-12-06 14:49:12
原创
634 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板