我有这个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从此链接获取源代码
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,则您的电子邮件地址有效,否则无效
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)
干杯
| 归档时间: |
|
| 查看次数: |
52228 次 |
| 最近记录: |