【问题标题】:Android email validation doesn't workAndroid 电子邮件验证不起作用
【发布时间】:2025-12-22 19:55:11
【问题描述】:

我是 Android 编程和 Java 的新手,很难理解。

我有一个用户可以输入的电子邮件的 editText 字段。我得到了这个输入:

final EditText loginEmail = (EditText) findViewById(R.id.loginEmail);

不,我正在检查此字段是否为空。如果:

if (loginEmail.getText().toString().length() == 0) {
  loginEmail.setError("Please enter a E-Mail Address!");
} else if () {
  loginEmail.setError("Invalid E-Mail Address!");
} else {
  //Do a thing if is valid...  
}

在第一个if之后,我想检查输入是否是有效的电子邮件,但不知道如何处理。

我已经用这篇文章的答案进行了尝试:Email Address Validation in Android on EditText

但是我不知道这个方法怎么用……

谢谢你帮助我!

【问题讨论】:

    标签: java android


    【解决方案1】:

    使用:

    if (!Patterns.EMAIL_ADDRESS.matcher(loginEmail.getText().toString()).matches()){
        loginEmail.setError("Please enter a Valid E-Mail Address!");
    }else {
        //email is valid
    }
    

    【讨论】:

    • 太棒了!谢谢哥们。我很高兴
    • 如果有帮助,请考虑接受答案!快乐编码:)
    • 是的,但我必须等到 10 分钟结束 ;) 我才能接受这个
    【解决方案2】:

    将其他帖子中的方法添加到您的课程中。 然后使用这个:

    String email = loginEmail.getText().toString();
    if (email.isEmpty()) {
        loginEmail.setError("Please enter a E-Mail Address!");
    } else if (!isValidEmail(email)) {
        loginEmail.setError("Invalid E-Mail Address!");
    } else {
      // Do a thing if is valid...  
    }
    

    【讨论】:

    • 另一个答案显示了捷径;我的展示了如何使用另一种方法,所以我暂时将其留在这里。
    【解决方案3】:

    检查输入的文本是否为空并与电子邮件模式匹配。

    String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+";
    
    String email = loginEmail.getText().toString();
    
    if (email.isEmpty() && email.matches(emailPattern)) {
        loginEmail.setError("Please enter a E-Mail Address!");
    } else 
        loginEmail.setError("Invalid E-Mail Address!"); 
    }
    

    【讨论】:

      【解决方案4】:

      试试这个,

      String email_string = loginEmail.getText().toString();
      if(!TextUtils.isEmpty(email_string) && android.util.Patterns.EMAIL_ADDRESS.matcher(email_string).matches()) {
          //valid emailID
      }
      

      【讨论】:

        【解决方案5】:

        工作!!!!

        我们现在有简单的电子邮件模式匹配器

        private static boolean isValidEmail(String email) {
                return !TextUtils.isEmpty(email) && android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
            }
        

        【讨论】:

          【解决方案6】:

          来源:这是 * 答案之一的代码,用于使用 java 进行电子邮件验证。

          public static boolean isEmailValid(String email)
              {
                  Pattern pattern;
                  Matcher matcher;
                  final String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
                  pattern = Pattern.compile(EMAIL_PATTERN);
                  matcher = pattern.matcher(email);
                  return matcher.matches();
              }
          

          【讨论】:

            【解决方案7】:

            全局声明此字符串格式

            final String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";

            现在匹配文本中的模式

            if ((!email_a.getText().toString().trim().matches(EMAIL_PATTERN))) { email_a.setError("Invalid email"); } 享受编码:)

            【讨论】: