我有这个EditText定义:
<EditText
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:inputType="textEmailAddress"
android:id="@+id/EmailText"/>
请注意,EditText具有使用电子邮件地址规范定义的inputType。 Android是否内置了任何内容来验证电子邮件地址输入类型,还是必须手动完成?它允许我输入无效数据,所以我很好奇它的目的。
感谢。
答案 0 :(得分:150)
如果您使用的是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.java
文件复制到项目中并引用它即可。您可以从this link
Patterns.java
的源代码
答案 1 :(得分:41)
此处通过提供输入类型的电子邮件,您将设置电子邮件类型的键盘表示“@”和“。”。关键字将显示在键盘上。
更好的解决方案是通过以下功能比较电子邮件
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,那么您的电子邮件地址有效,否则不是
答案 2 :(得分:17)
boolean isEmailValid(CharSequence email) {
return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}
或 自定义验证库 https://github.com/vekexasia/android-form-edittext 检查second link以获取详细信息和预览(正则表达式,数字,alpha,alphaNumeric,电子邮件,creditCard,phone,domainName,ipAddress,webUrl)
干杯
答案 3 :(得分:4)
Editext字段不会仅通过将其输入法设置为电子邮件类型来验证您的电子邮件。
您需要自己验证。
Android: are there any good solutions how to validate Editboxes