0

这是我的代码。现在我想检查一下 if 条件:

public static boolean isEmailValid(String email) { boolean isValid = false;
String expression = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@"
  + "((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?"
  + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\."
  + "([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?"
  + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
  + "([a-zA-Z]+[\\w-]+\\.)+[a-zA-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;
4

4 回答 4

1

第一和你的方式

尝试:你的字符串表达式应该是

 String expression = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@"
+ "((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?"
+ "[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\."
+ "([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?"
+ "[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
+ "([a-zA-Z]+[\\w-]+\\.)+[a-zA-Z]{2,4})$";

第二种方式

您可以使用 android.util.Patterns.EMAIL_ADDRESS.matcher(inputStr).matches()

所以你的方法应该是

public static boolean isEmailValid(String email) {    
CharSequence inputStr = email;    
return android.util.Patterns.EMAIL_ADDRESS.matcher(inputStr).matches();
}
于 2013-07-17T09:50:12.907 回答
1

我会这样定义你的函数:

public static boolean isEmailValid(String email) {
  String expression = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@"
    + "((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?"
    + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\."
    + "([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\\.([0-1]?"
    + "[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
    + "([a-zA-Z]+[\\w-]+\\.)+[a-zA-Z]{2,4})$";

  Matcher matcher = Pattern.compile(expression, Pattern.CASE_INSENSITIVE).matcher(email);
  return matcher.matches();
}

然后像这样测试有效的电子邮件:

if( isEmailValid("something@example.com") ) {
  // Email is valid
} else {
  // Email is not valid
}

PS:我没有检查你的正则表达式的有效性,只是整理了剩下的代码

于 2013-07-17T09:55:19.367 回答
1

为什么不能使用这是最好的方法

boolean isEmailValid(CharSequence email) {
   return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}
于 2013-07-17T10:02:08.323 回答
1

另一种选择是从 API 级别 8 开始的内置模式:

public final static boolean isValidEmail(CharSequence target) {
    if (target == null) {
        return false;
    } else {
        return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
    }
}
于 2013-07-17T10:40:27.580 回答