我想验证EditText中引入的电子邮件,以及我已经拥有的代码:
public static boolean isValidEmail(String str) {
boolean isValid = false;
String expression = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
CharSequence inputStr = str;
Pattern pattern = Pattern.compile(expression);
Matcher matcher = pattern.matcher(inputStr);
if (matcher.matches()) {
isValid = true;
}
return isValid;
}
问题是当我在启动电子邮件ID时使用_和 - 这些字符时,没有显示错误,但是当我使用任何其他字符时,会显示错误。
现在我希望当我在启动电子邮件ID时使用任何特殊字符时,必须显示错误。启动电子邮件ID时不允许使用特殊字符。
我应该为此做些什么..?
答案 0 :(得分:1)
尝试这个简单的代码:
public static boolean validateEmailAddress(String emailAddress) {
regexPattern = Pattern .compile("^[(a-zA-Z-0-9-\\_\\+\\.)]+@[(a-z-A-z)]+\\.[(a-zA-z)]{2,3}$");
regMatcher = regexPattern.matcher(emailAddress);
if (regMatcher.matches())
{
return true;
} else {
return false;
}
}
答案 1 :(得分:1)
用于验证android sdk中的电子邮件地址的模式是
public static final Pattern EMAIL_ADDRESS
= Pattern.compile(
"[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" +
"\\@" +
"[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" +
"(" +
"\\." +
"[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" +
")+"
);
你可以这样访问它:
android.util.Patterns.EMAIL_ADDRESS
答案 2 :(得分:0)
只需创建一个方法并在接受输入之前检查它。没有必要手动检查电子邮件输入字符android已经定义了您只需要调用它的所有这些数据类型 示例
public static boolean isEmailValid(CharSequence email)
{
return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches() ;
}
然后在oncreate上或者如果在按钮内等,只需将其称为
EditText et = (EditText)findViewbyid(R.id.email) ;
String em = et.getText().toString() ;
if(!Validating.isEmailValid(em))
{
et.setHint("use this format username@abc.com") ;
return;
}