EditText内的电子邮件验证

时间:2014-03-31 07:44:59

标签: android email android-input-method

我想验证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时不允许使用特殊字符。

我应该为此做些什么..?

3 个答案:

答案 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;
      }