如何检查电子邮件验证?错误是什么?

How to check email validation?What is the error?

我试过这个简单的例子。

final String email = edt.getText().toString().trim();

    //final String emailPattern = "^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$";
    final String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\.+[a-z]+";



    btnchk.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            if (email.matches(emailPattern))
            {
            Toast.makeText(getApplicationContext(),"valid email address",Toast.LENGTH_SHORT).show();
            }
            else 
            {
            Toast.makeText(getApplicationContext(),"Invalid email address", Toast.LENGTH_SHORT).show();
            }

        }
    });

尝试了这两种模式,但我收到的消息是我输入的任何正确电子邮件 ID 的电子邮件地址无效。

尝试:

    if(isEditTextContainEmail(edtEmailAddress))
    {
      Toast.makeText(getApplicationContext(),"valid email address",Toast.LENGTH_SHORT).show();
    }

    else 
    {
      Toast.makeText(getApplicationContext(),"Invalid email address", Toast.LENGTH_SHORT).show();
    }

使用此方法:

public static boolean isEditTextContainEmail(EditText argEditText) {

    try {
        Pattern pattern = Pattern.compile("^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$");
        Matcher matcher = pattern.matcher(argEditText.getText());
        return matcher.matches();
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}

试试这个正则表达式:

[a-zA-Z0-9._-]+@[a-z]+\.[a-z]+

你的正则表达式没问题。您只需要在点击监听器中读取您的电子邮件地址为

btnchk.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        String email = edt.getText().toString().trim();
        if (email.matches(emailPattern))
        {

问题是您在阅读 edt 文本框时 为空 ,因此 regex 测试失败。

我认为这是 chek 电子邮件验证的更好解决方案试试这个..

public final static boolean isValidEmail(CharSequence yourEmail) {
    if (yourEmail== null) {
        return false;
    } else {
        return android.util.Patterns.EMAIL_ADDRESS.matcher(yourEmail).matches();
    }
}

我希望能为您服务:)

我认为@Ravi 已经发现了您问题的直接原因。您没有验证正确的字符串。

但是,您的正则表达式也是错误的,因为它排除了许多实际上有效的电子邮件地址。例如:

  • 本地部分可以是带引号的字符串
  • 本地部分可以包含各种非字母数字字符
  • 域部分可以有一个组件,也可以有两个以上的组件
  • 域部分可以是IP地址,
  • 本地和域部分可以包含非 ASCII 字符。

参考: