为什么默认的EditText for email不验证电子邮件地址?因为EditText字段用于输入数字。我知道我们可以使用java.util.regex.Matcher和java.util.regex.Pattern来验证它。数字的默认函数是什么?
inputtype =“textEmailAddress”无效,因为inputType =“number”可以正常工作......
答案 0 :(得分:2)
Editext字段不会仅通过将其输入法设置为电子邮件类型来验证您的电子邮件。
您需要自己验证。
试试这个:
Android: are there any good solutions how to validate Editboxes
答案 1 :(得分:0)
请使用以下代码,它将解决您的问题。
public static boolean isEmailValid(String email) {
boolean isValid = false;
String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
CharSequence inputStr = email;
Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(inputStr);
if (matcher.matches()) {
isValid = true;
}
return isValid;
}
有关详细信息,请参阅下面的Stack Overflow链接。
答案 2 :(得分:0)
您可以通过oval.jar文件轻松地在android中进行任何类型的验证。 OVal是一种实用且可扩展的通用验证框架,适用于任何类型的Java对象。
点击此链接:http://oval.sourceforge.net/userguide.html
您可以从此处下载此内容:http://oval.sourceforge.net/userguide.html#download
您可以通过在变量
中设置标记来使用验证public class Something{
@NotEmpty //not empty validation
@Email //email validation
@SerializedName("emailAddress")
private String emailAddress;
}
private void checkValidation() {
Something forgotpass.setEmailAddress(LoginActivity.this.dialog_email.getText().toString());
Validator validator = new Validator();
//collect the constraint violations
List<ConstraintViolation> violations = validator.validate(forgotpass);
if(violations.size()>0){
for (ConstraintViolation cv : violations){
if(cv.getMessage().contains("emailAddress")){
dialog_email.setError(ValidationMessage.formattedError(cv.getMessage(), forgotpass));
}
}
}
}