关于android:在EditText中验证电子邮件

Validate an email inside an EditText

本问题已经有最佳答案,请猛点这里访问。

我想验证在EditText中引入的一封电子邮件,这是我已经拥有的代码:

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

final TextView text = (TextView)findViewById(R.id.text);

问题是,当我在" @"之后引入3个字符时,会出现消息"有效电子邮件",而当我引入完整的电子邮件时必须出现该消息。

有什么建议吗?

谢谢你们!


只需如下更改正则表达式:

因为。点(dot)表示匹配任何单字符,在点之前加双反斜杠代表真实的点。


我编写了一个扩展EditText的库,该库本身支持某些验证方法,并且实际上非常灵活。

如我所写,当前本地支持的(通过xml属性)验证方法是:

  • regexp:用于自定义regexp
  • 数字:仅用于数字字段
  • alpha:仅用于alpha字段
  • alphaNumeric:你猜怎么着?
  • 电子邮件:检查该字段是否为有效电子邮件
  • creditCard:使用Luhn算法检查字段是否包含有效的信用卡
  • 电话:检查字段中是否包含有效的电话号码
  • domainName:检查该字段是否包含有效的域名(始终通过API Level <8中的测试)
  • ipAddress:检查该字段是否包含有效的IP地址
    webUrl:检查该字段是否包含有效的url(始终通过API Level <8中的测试)
  • nocheck:不检查任何内容。 (默认)
  • 您可以在这里查看:https://github.com/vekexasia/android-form-edittext

    希望你喜欢它 :)

    在我链接的页面中,您还可以找到电子邮件验证的示例。我将在此处复制相对代码段:

    还有一个测试应用程序展示了库的可能性。

    这是验证电子邮件字段的应用程序的屏幕截图。

    email validation done thorugh xml+library



    如果您使用的是API 8或更高版本,则可以使用现成的Patterns类来验证电子邮件。样例代码:

    如果您偶然支持的API级别小于8,那么只需将Patterns.java文件复制到您的项目中并引用它即可。您可以从此链接获取Patterns.java的源代码


    这里有几个不错的选择,包括API 8+的android.util.Patterns.EMAIL_ADDRESS。

    https://stackoverflow.com/a/7882950/1011746


    试试这个模式。

    editText.addTextChangedListener(new TextWatcher(){


    不要在代码中这样做。您可以使用EditText的inputType属性。


    //验证您的电子邮件地址格式。前[email protected]