正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
在 androidx.core.util.PatternsCompat.java中,已经存在表达式:
/**
* From androidx.core.util.PatternsCompat.EMAIL_ADDRESS
*/
public static final Pattern EMAIL_ADDRESS = Pattern.compile(
"[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" +
"\\@" +
"[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" +
"(" +
"\\." +
"[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" +
")+"
);
#1. 使用正则表达式,检查字符串值是否为电子邮件:
import androidx.core.util.PatternsCompat.EMAIL_ADDRESS
/**
* 检查字符串值是否为电子邮件
*
* @return 如果字符串是电子邮件地址,则为 true
*/
fun String.validateEmail(): Boolean = EMAIL_ADDRESS.matcher(this).matches()
#2. 添加单元测试:
@Test
fun validateEmail() {
val result = "test@mailinator.com".validateEmail()
assertTrue(result)
}
@Test
fun validateEmailWrongEmail() {
assertFalse("test@mailinator.com.".validateEmail())
assertFalse("testmailinator.com".validateEmail())
assertFalse("test@mailinatorcom.".validateEmail())
assertFalse("test@mailinatorcom".validateEmail())
}