我无法验证电子邮件字段

时间:2019-10-17 15:55:33

标签: java android

我目前正在做一个项目,该项目包含一个注册表,并且电子邮件验证必须在“ @”符号后包含一个“ libraryparadise.com”或“ gmail.com”,我似乎找不到解决方案

4 个答案:

答案 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

}