目录

Java Email 地址检查

目录

检查 Email 地址是否合法的功能比较常见,但是实际实现起来非常复杂,需要符合RFC822 文件对 Email 地址的相关规定。

基本用法

网络上常见到很多的正则模式用来判断 Email 地址合法性,但是因为功能孱弱、模式简单,只适用于 demo 型项目等非生产环境。一般来说,要校验 Email 地址应该使用 Apache Commons Validator 库。 加入 Gradle 依赖的代码为:

1
compile 'commons-validator:commons-validator:1.5.0'

而后的使用方法非常简单,先引入依赖的类文件:

1
import org.apache.commons.validator.routines.EmailValidator;

然后,获取校验工具实例:

1
public static final EmailValidator EMAIL_VALIDATOR = EmailValidator.getInstance();

再用校验工具检查地址是否合法:

1
2
3
if (EMAIL_VALIDATOR.isValid(email)) {
    ... // 省略合法地址的处理代码
}

当然,这个库不止这一个简单的功能,还能够自定义校验模式,具体内容可以在官网找到。

Android 项目特别要求

比较简单的 Android 项目尤其是 demo 项目,可以使用系统提供的正则模式库进行 Email 地址检查,构建自己的工具方法,比如:

1
2
3
4
5
6
7
8
public class EmailValidator {

    private EmailValidator() {}

    public final static boolean isValid(CharSequence target) {
        return !TextUtils.isEmpty(target) && android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
    }
}

如果有更高、更严谨的检查需求,则仍要使用 Apache Commons Validator。但是,引入的时候最好注意 Apache Commons Validator 会依赖 Apache Commons Logging 库,而 Android 项目本身就会自动引入它,很容易发生依赖冲突。解决的办法也简单,引入时排除这个依赖即可:

1
2
3
compile ('commons-validator:commons-validator:1.5.0') {
    exclude group: 'commons-logging', module: 'commons-logging'
}