java验证电子邮件_用Java验证电子邮件
这是我身边的东西。为了检查地址是否是有效的格式,这里有一个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验证电子邮件相关推荐
- java 登陆验证失败_使用Java 8流进行快速失败的验证
java 登陆验证失败 我已经失去了看过使用快速失败验证代码状态的代码的次数,方法如下: public class PersonValidator {public boolean validate(P ...
- java validate 框架_使用validate验证框架
主要是两个配置文件和资源文件的修改,然后就是在jsp中输出验证的结果 validator-rules.xml是验证注册类,用于定义验证逻辑,它的部分代码 className="org.apa ...
- java 正则表达式 邮编_使用Java正则表达式进行邮政编码验证
可以使用java.util.regex.Pattern.matches()方法验证邮政编码.此方法匹配邮政编码和给定输入邮政编码的正则表达式,如果匹配则返回true,否则返回false. 演示此过程的 ...
- java核心教程_核心Java教程
java核心教程 Welcome to Core Java Tutorial. I have written a lot on Core Java and Java EE frameworks. Th ...
- java武功秘籍_请问java全套内容都有什么呢?
我整理的Java全套内容学习路线,分为6个阶段(大阶段)第一阶段:java内功心法篇 第二阶段:Java武功秘籍(经典框架) 第三阶段:Java高级功法(主流框架) 第四阶段:Java成神之路 第五阶 ...
- java初始化数据报_初始化java原因
虚拟机的类加载机制 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类 即虚拟机的类加载机制. 在Java中,类型的加载.链接 ...
- bigint对应java什么类型_「JAVA」从格式化输出到扫描输入,深究Java正则表达式匹配之道
字符串是不可变的 字符串是不可变的,也就是说当字符串的内容发生改变的时候,会创建一个新的String对象:但是如果内容没有发生改变的时候,String类的方法会返回原字符串对象的引用. 而正则表达式往 ...
- 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应用服务器 ...
- java面向对象课件_《JAVA面向对象基础》PPT课件.ppt
<<JAVA面向对象基础>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<JAVA面向对象基础>PPT课件.ppt(68页珍藏版)>请在人人文库 ...
- 路科验证示例_角度形式验证示例
路科验证示例 In this post, we will see how Angular form validation works. Earlier we looked into angular f ...
最新文章
- 梯度提升树算法原理小结
- LeakDiag 微软一款检测memory leak的工具
- dotnetCore增加MiddleWare的Run,Use Map MapThen四个扩展方法
- 前端开发技术:HTML5 JS 前端开发主要功能!
- 渗透测试中说的Shell和Webshll到底是什么
- 【南邮操作系统实验】页面置换算法(FIFO、LRU、OPT) Python 版
- Select的onchange事件
- php的json_encode第二个参数学习及应用
- 离散时间信号处理第三版英文版课后习题答案
- IT男改变生活之12306选择上,中,下铺
- linux内存显示少,linux 显示的内存怎么少于我实际的物理内存
- LMP90080-芯片手册
- mysql 2002_解决MySQL报错ERROR 2002 (HY000)
- 简述使用计算机对会计工作的影响,会计电算化对会计工作的影响有哪些
- Vscode删除空白行
- 设备一路485如何供两台电脑使用_干货!消防设备供电系统有哪些部分构成,用电负荷等级如何划分?...
- Python, Python, Python
- Go string类型及其使用
- # 华为mate40 or iphon 12
- XPE启动蓝屏或FBA反复重启的问题