我目前正在做一个项目,该项目包含一个注册表,并且电子邮件验证必须在“ @”符号后包含一个“ libraryparadise.com”或“ gmail.com”,我似乎找不到解决方案
答案 0 :(得分:2)
如果要避免为电子邮件验证创建正则表达式,则可以使用下一个代码
private void validateEmail() {
String email = emailEditText.getText().toString().trim();
if (PatternsCompat.EMAIL_ADDRESS.matcher(email).matches() &&
(email.endsWith("@gmail.com") || email.endsWith("libraryparadise.com"))) {
setEmail(email);
} else {
displayError();
}
}
答案 1 :(得分:1)
尝试此代码检查电子邮件验证 Patterns.EMAIL_ADDRESS.matcher只需检查正确的电子邮件模式,例如“ abc@xyz.com”
String email=emailText.getText().toString();
//check email patterns validation
if(!Patterns.EMAIL_ADDRESS.matcher(email).matches()){
Toast.makeText(context, "Email not valid", Toast.LENGTH_SHORT).show();
return;
}else{
Toast.makeText(context, "Email not valid", Toast.LENGTH_SHORT).show();
}
答案 2 :(得分:0)
鉴于电子邮件地址的复杂性,对于电子邮件验证并没有一个很好的解决方案。
考虑两部分验证
1.验证电子邮件地址文本是否以“ @ libraryparadise.com”或“ @ gmail.com”结尾,并在“ @”字符的左侧保留一个字符
2.使用正则表达式验证电子邮件地址
将这些验证分成多个检查而不是一个大的正则表达式会更容易。如果将来的开发人员处于不同的支票中,他们可以阅读代码以更轻松地查看这些支票。
答案 3 :(得分:0)
您可以使用正则表达式
如果您确定只需要“ libraryparadise.com”和“ gmail.com”,则可以使用两个正则表达式并像这样进行比较。
String regex = "^[a-zA-Z0-9_]+(?:\\.[a-zA-Z0-9_]+)*@gmail.com*$";
String regex2 = "^[a-zA-Z0-9_]+(?:\\.[a-zA-Z0-
9_]+)*@libraryparadise.com*$";
Pattern pattern = Pattern.compile(regex);
Pattern pattern2 = Pattern.compile(regex2);
获取包含文本的视图
sampleText=findViewById(R.id.sampleText);
然后在有条件的任何地方使用它。
if(pattern.matcher(sampleText.getText().toString().trim()).matches()||
pattern2.matcher(sampleText.getText().toString().trim()).matches()){
//ValidEmail
}
else {
//Invalid Email
}