这是我身边的东西。为了检查地址是否是有效的格式,这里有一个regex来验证它是否接近rfc2822(它没有捕捉到一些奇怪的角落情况)。我去年在网上找到的。

private static final Pattern rfc2822 = Pattern.compile(

"^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"

);

if (!rfc2822.matcher(email).matches()) {

throw new Exception("Invalid address");

}

这将处理简单的语法(大部分)。我知道的另一个检查将让您检查域是否有MX记录。看起来是这样的:

Hashtable env = new Hashtable();

env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory");

DirContext ictx = new InitialDirContext(env);

Attributes attrs = ictx.getAttributes(domainName, new String[] {"MX"});

Attribute attr = attrs.get("MX");

if (attr == null)

// No MX record

else

// If attr.size() > 0, there is an MX record

这个,我也在网上找到了。它来自

this link

如果这两个都通过,你就很有可能有一个有效的地址。如果地址是自己的(不只是域名),它没有满,等等。。。你真的查不出来。

注意第二张支票是

时间密集型

希望这有帮助。

编辑

我想指出的是,至少有比regex更好的方法来检查基本有效性。Don和Michael指出Apache Commons有一些东西,我最近发现可以在InternetAddress上使用.validate()让Java检查地址是否真的是RFC-8222,这肯定比我的regex更准确。

java验证电子邮件_用Java验证电子邮件相关推荐

  1. java 登陆验证失败_使用Java 8流进行快速失败的验证

    java 登陆验证失败 我已经失去了看过使用快速失败验证代码状态的代码的次数,方法如下: public class PersonValidator {public boolean validate(P ...

  2. java validate 框架_使用validate验证框架

    主要是两个配置文件和资源文件的修改,然后就是在jsp中输出验证的结果 validator-rules.xml是验证注册类,用于定义验证逻辑,它的部分代码 className="org.apa ...

  3. java 正则表达式 邮编_使用Java正则表达式进行邮政编码验证

    可以使用java.util.regex.Pattern.matches()方法验证邮政编码.此方法匹配邮政编码和给定输入邮政编码的正则表达式,如果匹配则返回true,否则返回false. 演示此过程的 ...

  4. java核心教程_核心Java教程

    java核心教程 Welcome to Core Java Tutorial. I have written a lot on Core Java and Java EE frameworks. Th ...

  5. java武功秘籍_请问java全套内容都有什么呢?

    我整理的Java全套内容学习路线,分为6个阶段(大阶段)第一阶段:java内功心法篇 第二阶段:Java武功秘籍(经典框架) 第三阶段:Java高级功法(主流框架) 第四阶段:Java成神之路 第五阶 ...

  6. java初始化数据报_初始化java原因

    虚拟机的类加载机制 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类 即虚拟机的类加载机制. 在Java中,类型的加载.链接 ...

  7. bigint对应java什么类型_「JAVA」从格式化输出到扫描输入,深究Java正则表达式匹配之道

    字符串是不可变的 字符串是不可变的,也就是说当字符串的内容发生改变的时候,会创建一个新的String对象:但是如果内容没有发生改变的时候,String类的方法会返回原字符串对象的引用. 而正则表达式往 ...

  8. java ee6教程_《Java EE 6 企业级应用开发教程》怎么样_目录_pdf在线阅读 - 课课家教育...

    第1章 java EE概述 1.1 Java EE的产生与发展 1.2 Java EE 6架构 1.3 Java EE 6常用技术 1.4 Java EE 6特性 1.5 Java EE 6应用服务器 ...

  9. java面向对象课件_《JAVA面向对象基础》PPT课件.ppt

    <<JAVA面向对象基础>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<JAVA面向对象基础>PPT课件.ppt(68页珍藏版)>请在人人文库 ...

  10. 路科验证示例_角度形式验证示例

    路科验证示例 In this post, we will see how Angular form validation works. Earlier we looked into angular f ...

最新文章

  1. 梯度提升树算法原理小结
  2. LeakDiag 微软一款检测memory leak的工具
  3. dotnetCore增加MiddleWare的Run,Use Map MapThen四个扩展方法
  4. 前端开发技术:HTML5 JS 前端开发主要功能!
  5. 渗透测试中说的Shell和Webshll到底是什么
  6. 【南邮操作系统实验】页面置换算法(FIFO、LRU、OPT) Python 版
  7. Select的onchange事件
  8. php的json_encode第二个参数学习及应用
  9. 离散时间信号处理第三版英文版课后习题答案
  10. IT男改变生活之12306选择上,中,下铺
  11. linux内存显示少,linux 显示的内存怎么少于我实际的物理内存
  12. LMP90080-芯片手册
  13. mysql 2002_解决MySQL报错ERROR 2002 (HY000)
  14. 简述使用计算机对会计工作的影响,会计电算化对会计工作的影响有哪些
  15. Vscode删除空白行
  16. 设备一路485如何供两台电脑使用_干货!消防设备供电系统有哪些部分构成,用电负荷等级如何划分?...
  17. Python, Python, Python
  18. Go string类型及其使用
  19. # 华为mate40 or iphon 12
  20. XPE启动蓝屏或FBA反复重启的问题

热门文章

  1. 第三方库下载教程(三种方法)
  2. B 1089 狼人杀-简单版(思路不好找)
  3. java oss 批量传输_软件神器 I 图片批量压缩改名工具Caesium汉化版
  4. 一文纵览 SocialFi 赛道的生态及趋势
  5. Codeforces 362C. Insertion Sort
  6. js技巧 console.log使用
  7. 超级计算机咋设置不卡,我的超级计算机
  8. vue echarts地图省市区下钻详解
  9. 机架式服务器怎么进入系统,机架式服务器操作系统
  10. 孩子学计算机编程有用吗,孩子学编程有用吗?