Java正则表达式基本电子邮件验证[重复]

ewm0tg9j  于 2023-05-12  发布在  Java
关注(0)|答案(1)|浏览(74)

此问题已在此处有答案

Regex Email validation(37答案)
昨天关门了。
我想用正则表达式在java中进行基本的电子邮件验证,我想到了下面的正则表达式

private static final String EMAIL_REGEX = "^\\s*(.+)@(.+)\\.(.+)\\s*$";

If we take test@gmail.com under this regex.

1. Ignore starting and trailing white spaces.
2. 1 or more char for username  (test)
3. @
4. one or more char for domain (gmail)
5. .
6. one or more char for domain extension(com).

是否符合我的要求?
我已经检查了Apache EmailValidator,但它也会对域进行一些验证,例如。当我尝试它与test@gmail.adpcc,然后它没有工作.我希望它能按照我的用例工作。

uinbv5nw

uinbv5nw1#

您提供的正则表达式是一个基本的电子邮件验证模式,它似乎符合您所描述的要求。但是,它不是很严格,可能会允许一些无效的电子邮件地址通过。下面是你提供的正则表达式:

private static final String EMAIL_REGEX = "^\\s*(.+)@(.+)\\.(.+)\\s*$";

这个正则表达式将使用您描述的格式匹配电子邮件地址,忽略前导和尾随空格,并且要求用户名、域和域扩展名至少有一个字符。但是,它不会对可以出现在用户名、域或域扩展名中的字符类型施加任何限制。
如果你想改进正则表达式,使其稍微严格一些,可以使用以下模式:

private static final String EMAIL_REGEX = "^\\s*([\\w!#$%&'*+\\-/=?^_`{|}~]+(?:\\.[\\w!#$%&'*+\\-/=?^_`{|}~]+)*)@([\\w](?:[\\w-]*[\\w])?\\.)+[a-zA-Z]{2,}\\s*$";

此模式允许用户名和域中有更大范围的有效字符,同时还检查由至少两个字母字符组成的有效域扩展名。但是,它仍然可能无法覆盖所有有效的电子邮件地址或拒绝所有无效的电子邮件地址。
Apache Commons EmailValidator在验证方面更全面,但正如您提到的,它可能不适合您的用例。如果上面的正则表达式模式适合您的特定需求,那么您可以将其用于基本的电子邮件验证。

相关问题