检查 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'
}
|