安卓电子邮件编辑文本验证

2022-09-01 03:21:59

我有这个编辑文本定义:

<EditText 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent"
     android:inputType="textEmailAddress" 
     android:id="@+id/EmailText"/>

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

谢谢。


答案 1

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

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

    return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
}

碰巧的是,如果您甚至支持低于8的API级别,那么您可以简单地将文件复制到项目中并引用它。您可以从此链接获取源代码Patterns.javaPatterns.java


答案 2

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

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

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

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


推荐