Android电子邮件EditText验证

Bri*_*ins 36 java android

我有这个EditText定义:

<EditText 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent"
     android:inputType="textEmailAddress" 
     android:id="@+id/EmailText"/>
Run Code Online (Sandbox Code Playgroud)

请注意,EditText具有使用电子邮件地址规范定义的inputType.Android是否内置了任何内容来验证电子邮件地址输入类型,还是必须手动完成?它允许我输入无效数据,所以我很好奇它的目的.

谢谢.

Mah*_*iya 158

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

public final static boolean isValidEmail(CharSequence target) {
    if (target == null) 
        return false;

    return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}
Run Code Online (Sandbox Code Playgroud)

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

  • 这应该是公认的答案 (13认同)

dil*_*tar 44

这里通过提供输入类型的电子邮件,您设置电子邮件类型的键盘意味着"@"和"." 关键字将显示在键盘上.

更好的解决方案是通过以下功能比较电子邮件

public boolean isEmailValid(String email)
    {
         String regExpn =
             "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@"
                 +"((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?"
                   +"[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\."
                   +"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?"
                   +"[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
                   +"([a-zA-Z]+[\\w-]+\\.)+[a-zA-Z]{2,4})$";

     CharSequence inputStr = email;

     Pattern pattern = Pattern.compile(regExpn,Pattern.CASE_INSENSITIVE);
     Matcher matcher = pattern.matcher(inputStr);

     if(matcher.matches())
        return true;
     else
        return false;
}
Run Code Online (Sandbox Code Playgroud)

如果此函数返回true,则您的电子邮件地址有效,否则无效

  • 不错的解决方案,但是下面的解决方案更好。 (2认同)

Ewo*_*oks 17

您可以在这里这里找到更好的答案(原创作者的信用)

boolean isEmailValid(CharSequence email) {
   return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}
Run Code Online (Sandbox Code Playgroud)

或自定义验证库https://github.com/vekexasia/android-form-edittext 检查第二个链接以获取详细信息和预览(正则表达式,数字,alpha,alphaNumeric,电子邮件,creditCard,phone,domainName,ipAddress,webUrl)

干杯


Luc*_*fer 6

Edittext 字段不会仅通过将其输入法设置为电子邮件类型来验证您的电子邮件。

您需要自己验证。

Android:有什么好的解决方案如何验证编辑框

电子邮件验证安卓