Android 电子邮件验证不起作用
Posted
技术标签:
【中文标题】Android 电子邮件验证不起作用【英文标题】:Android email validation doesn't work 【发布时间】:2017-05-27 16:31:53 【问题描述】:我是 android 编程和 Java 的新手,很难理解。
我有一个用户可以输入的电子邮件的 editText 字段。我得到了这个输入:
final EditText loginEmail = (EditText) findViewById(R.id.loginEmail);
不,我正在检查此字段是否为空。如果:
if (loginEmail.getText().toString().length() == 0)
loginEmail.setError("Please enter a E-Mail Address!");
else if ()
loginEmail.setError("Invalid E-Mail Address!");
else
//Do a thing if is valid...
在第一个if
之后,我想检查输入是否是有效的电子邮件,但不知道如何处理。
我已经用这篇文章的答案进行了尝试:Email Address Validation in Android on EditText
但是我不知道这个方法怎么用……
谢谢你帮助我!
【问题讨论】:
【参考方案1】:使用:
if (!Patterns.EMAIL_ADDRESS.matcher(loginEmail.getText().toString()).matches())
loginEmail.setError("Please enter a Valid E-Mail Address!");
else
//email is valid
【讨论】:
太棒了!谢谢哥们。我很高兴 如果有帮助,请考虑接受答案!快乐编码:) 是的,但我必须等到 10 分钟结束 ;) 我才能接受这个【参考方案2】:将其他帖子中的方法添加到您的课程中。 然后使用这个:
String email = loginEmail.getText().toString();
if (email.isEmpty())
loginEmail.setError("Please enter a E-Mail Address!");
else if (!isValidEmail(email))
loginEmail.setError("Invalid E-Mail Address!");
else
// Do a thing if is valid...
【讨论】:
另一个答案显示了捷径;我的展示了如何使用另一种方法,所以我暂时将其留在这里。【参考方案3】:检查输入的文本是否为空并与电子邮件模式匹配。
String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+";
String email = loginEmail.getText().toString();
if (email.isEmpty() && email.matches(emailPattern))
loginEmail.setError("Please enter a E-Mail Address!");
else
loginEmail.setError("Invalid E-Mail Address!");
【讨论】:
【参考方案4】:试试这个,
String email_string = loginEmail.getText().toString();
if(!TextUtils.isEmpty(email_string) && android.util.Patterns.EMAIL_ADDRESS.matcher(email_string).matches())
//valid emailID
【讨论】:
【参考方案5】:工作!!!!
我们现在有简单的电子邮件模式匹配器
private static boolean isValidEmail(String email)
return !TextUtils.isEmpty(email) && android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
【讨论】:
【参考方案6】:来源:这是 *** 答案之一的代码,用于使用 java 进行电子邮件验证。
public static boolean isEmailValid(String email)
Pattern pattern;
Matcher matcher;
final String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]2,)$";
pattern = Pattern.compile(EMAIL_PATTERN);
matcher = pattern.matcher(email);
return matcher.matches();
【讨论】:
【参考方案7】:全局声明此字符串格式
final String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]2,)$";
现在匹配文本中的模式
if ((!email_a.getText().toString().trim().matches(EMAIL_PATTERN)))
email_a.setError("Invalid email");
享受编码:)
【讨论】:
以上是关于Android 电子邮件验证不起作用的主要内容,如果未能解决你的问题,请参考以下文章