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

时间:2015-03-06 07:03:25

标签: java android regex email-validation

我尝试了这个简单的例子。

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。

5 个答案:

答案 0 :(得分:2)

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

btnchk.setOnClickListener(new OnClickListener() {

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

问题是,当您的edt 时,您正在阅读{{1}}文本框,因此正则表达式测试失败。

答案 1 :(得分:1)

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

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

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

参考:

答案 2 :(得分:0)

尝试:

    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;
    }
}

答案 3 :(得分:0)

试试这个注册表:

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

答案 4 :(得分:0)

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

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

我希望为你的案子工作:)