我正在android.In注册部分制作一个用户登录应用程序,使用正确的电子邮件地址模式,我正在使用正则表达式。它工作正常,但主要问题是我可以登录xyz@123.com但我想要只有(gmail,hotmail,yahoo& rediffmail)不是123或abc等。我怎么能这样做。我的代码是
public static boolean isEmailValid(String email,EditText et) {
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;
}else{
et.setError(Html.fromHtml("<font color='#000'>Plese type valid Email Address</font>"));
}
return isValid;
}
请帮助我。
答案 0 :(得分:3)
在https://developer.android.com/reference/android/util/Patterns.html中使用预定义的EMAIL_ADDRESS
模式。
答案 1 :(得分:0)
我认为最好让验证与任何逻辑分离(错误显示,视图等......):
创建一个接口:ValidationCallback.java
public interface ValidationCallback {
void onEval (boolean isValid);
}
然后是一个Utility类,其中所有验证规则都将去(isNumeric是......):Lang.java
public class Lang {
private final static Set<String> Providers;
static {
Providers = new HashSet<String> ();
Providers.add ("gmail");
Providers.add ("yahoo");
Providers.add ("outlook");
}
public static void checkEmailValidity (String input, ValidationCallback callback) {
if (callback != null) {
callback.onEval (isEmailValid (input));
}
}
public static boolean isEmailValid (String input) {
String emailExp = "[a-zA-Z0-9][a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{0,255}\\@[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}(\\.[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25})+";
Pattern pattern = Pattern.compile (emailExp);
boolean isValid = pattern.matcher (input).matches ();
if (isValid) {
String provider = input.split ("@")[1].split (".")[0].toLowerCase ();
if (!Providers.contains (provider)) {
isValid = false;
}
}
return isValid;
}
}
然后从您的Activity或具有该视图的另一个Utility类:
ValidationCallback callback = new ValidationCallback () {
@Override
public void onEval (boolean isValid) {
if (!isValid) {
editText.setError(Html.fromHtml("<font color='#000'>Plese type valid Email Address</font>"));
}
}
}
Lang.checkEmailValidity (editText.getText (), callback);
或者如果您不想使用回调机制:
if (!Lang.isEmailValid (editText.getText ())) {
editText.setError(Html.fromHtml("<font color='#000'>Plese type valid Email Address</font>"));
}
你得到了照片,你可以根据需要进行调整。