如何检查输入的文本是否为电子邮件地址? Android的

时间:2013-07-17 09:42:57

标签: android

这是我的代码。现在我想在条件中检查这个:

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 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分: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:我没有检查你的正则表达式的有效性,只是安排了剩下的代码

答案 2 :(得分:1)

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

boolean isEmailValid(CharSequence email) {
   return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
}

答案 3 :(得分: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();
    }
}