Android电子邮件EditText验证[重复]
Posted
技术标签:
【中文标题】Android电子邮件EditText验证[重复]【英文标题】:Android Email EditText Validation [duplicate] 【发布时间】:2012-03-10 11:38:13 【问题描述】:我有这个 EditText 定义:
<EditText
android:layout_
android:layout_
android:inputType="textEmailAddress"
android:id="@+id/EmailText"/>
请注意,EditText 具有使用电子邮件地址规范定义的 inputType。 Android 是否内置了任何东西来验证电子邮件地址输入类型,或者这一切都必须手动完成?它允许我输入无效数据,所以我很好奇它的用途。
谢谢。
【问题讨论】:
请参考这个,希望对你有帮助:***.com/questions/12947620/… 【参考方案1】:这里通过输入类型电子邮件,您正在设置电子邮件类型的键盘表示“@”和“。”关键字将显示在键盘上。
更好的解决方案是通过以下功能比较电子邮件
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,则您的电子邮件地址有效,否则无效
【讨论】:
假设该方法可能被多次调用,将模式存储在静态字段中效率更高。此外,由于您的模式使用 [a-zA-Z] 标志Pattern.CASE_INSENSITIVE
是多余的(或者您可以将 [az] 与它一起使用):private static final String EMAIL_PATTERN = Pattern.compile("<emailpattern>");
此外,最后一个 if 语句可以简化为:@987654324 @。而且你错过了一些类型声明;)
不是一个糟糕的解决方案,但下面的解决方案更好。
未传递有效的 1@ggg.ccc。最好的选择是下面的答案或使用此模式 String EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" // + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]2,)$";
如果你有butterknife和android Saripaar,它会更容易使用,代码看起来更干净:)【参考方案2】:
如果您使用 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
的源代码
【讨论】:
这应该是公认的答案 我同意,这是正确的做法。 纯真棒!它就像一个魅力【参考方案3】:您可以找到更好的答案 here 和 here(感谢原作者)
boolean isEmailValid(CharSequence email)
return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
或 自定义验证库https://github.com/vekexasia/android-form-edittext 查看second link 了解详情和预览(正则表达式、数字、字母、字母数字、电子邮件、信用卡、电话、域名、ipAddress、webUrl)
干杯
【讨论】:
【参考方案4】:Editext 字段不会仅通过将输入法设置为电子邮件类型来验证您的电子邮件。
您需要自己验证。
Android: are there any good solutions how to validate Editboxes
email validation android
【讨论】:
这是回答问题的唯一答案以上是关于Android电子邮件EditText验证[重复]的主要内容,如果未能解决你的问题,请参考以下文章
验证在 EditText 中输入的电子邮件 ID 的模式 [重复]