【问题标题】:How to validate Email Id in android? [duplicate]如何在android中验证电子邮件ID? [复制]
【发布时间】:2017-01-06 12:10:51
【问题描述】:

我已经在我的应用程序中实现了电子邮件验证,但问题是应用程序接受超过 64 个字符的本地域部分,当我写 ..nnn..@gmail.com 时,应用程序也接受了这个,而且根据 RFC 3696 规范#section 3,句点(“.”)不能用于开始或结束本地部分,也不能出现两个或多个连续句点。

请帮帮我

private boolean isValidEmail(String email) {// validation for email Id
    boolean isValid = false;
    String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,255}$";

    Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(email);
    if (matcher.matches()) {
        isValid = true;

    }
    return isValid;
}

【问题讨论】:

标签: android


【解决方案1】:

试试这个代码。如果电子邮件有效,则返回 true。

android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();

【讨论】:

    【解决方案2】:

    我会在所有这些答案中建议一个简单的解决方案

    public static boolean isEmail(String email){
      return android.util.Patterns.EMAIL_ADDRESS.matcher(inputData.trim()).matches()
    }
    

    阅读 this 有关模式的文档。

    【讨论】:

      【解决方案3】:

      试试这个

      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      
      public class EmailValidation {
      private Pattern pattern;
      private Matcher matcher;
      
      private static final String EMAIL_PATTERN = 
          "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
          + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
      
      public EmailValidation() {
          pattern = Pattern.compile(EMAIL_PATTERN);
      }
      
      public boolean isValidate(final String hex) {
          matcher = pattern.matcher(hex);
          return matcher.matches();
        }
      }
      

      【讨论】:

      • 但是当我写 .. 和本地域部分的 64 个字符时它除外
      • 这是有效的 :)
      【解决方案4】:

      我建议您查看此库以进行 android 客户端验证

      https://github.com/ragunathjawahar/android-saripaar

      【讨论】:

        【解决方案5】:
        public final static boolean isValidEmail(CharSequence target) {
            if (TextUtils.isEmpty(target)) {
                return false;
            } else {
                return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches();
            }
        }
        

        【讨论】:

          【解决方案6】:

          Android SDK 有一个用于检查电子邮件的内置正则表达式。

          Patterns JavaDoc

          Matcher matcher = Patterns.EMAIL_ADDRESS.matcher(email);
          return matcher.matches();
          

          【讨论】:

          • 这个答案应该有更多的选票。它专门针对 Android,不会重复与其他答案相同的答案。
          【解决方案7】:

          试试这个,

          String expression = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+";
          

          【讨论】:

          • 但是当我写 ..aa..@gmail.com 应用程序正在接受
          猜你喜欢
          • 2017-10-30
          • 1970-01-01
          • 2011-08-21
          • 2013-09-25
          • 2013-01-18
          • 2011-03-27
          • 1970-01-01
          • 1970-01-01
          • 2010-10-19
          相关资源
          最近更新 更多