我想验证 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 开头不应允许使用特殊字符。
我该怎么办..?
用于验证 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
试试这个简单的代码:
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;
}
}
简单地说,您可以创建一个方法并在接受输入之前对其进行检查。无需手动检查电子邮件输入字符 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;
}