【问题标题】:Regular Expression To Validate Email Address [duplicate]验证电子邮件地址的正则表达式 [重复]
【发布时间】:2014-03-02 11:34:52
【问题描述】:

我正在尝试创建一个正则表达式来检查是否输入了有效的电子邮件地址。我的正则表达式有问题。这是我正在使用的源代码:

if (!Pattern.matches("^[\\w-\\+]+(\\.[\\w]+)*@[\\w-]+(\\.[\\w]+)*(\\.[a-z]{2,})$", s)) {
                    et.setError("Enter a valid Email Address");
}

我做错了什么?

【问题讨论】:

  • 您应该对正则表达式进行的唯一真正验证是检查“@”。关于这个话题已经有十亿个问题了......你不应该把这个问题复杂化的一个非常正当的理由。
  • @tenub 除了 Android 有一系列内置模式可供使用之外,您为什么只在电子邮件验证正则表达式中检查 @
  • 我做错了什么?直言不讳...使用正则表达式验证电子邮件地址。 It's ugly, unmanageable, and difficult to spot errors in.咬紧牙关,做更深入的字符串解析和分析,看看邮件是否真的有效。
  • using regex to validate an email address 嗯,这正是android.util.Patterns.EMAIL_ADDRESS works

标签: java android regex


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

你可以看到更多的默认模式Patterns | Android Developers

【讨论】:

  • 那么你怎么知道他们使用的是 Android SDK 或 android.util 包?
  • 因为问题是用android标记的
  • 包裹是否知道 me@you.email 或 me@mail.würzburg。
  • 为什么投反对票?如果投反对票的人能提供原因,将不胜感激
  • @admdrew 你不喜欢小圆桌吗? ;)
【解决方案2】:

我不知道您是否打算使用正则表达式,但 Android 有自己的内置方法来验证电子邮件地址

boolean isValid = android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches(); 

从 Gingerbread 开始就可以使用了

【讨论】:

    【解决方案3】:

    这成功了:

    ([\\w-+]+(?:\\.[\\w-+]+)*@(?:[\\w-]+\\.)+[a-zA-Z]{2,7})
    

    【讨论】:

      猜你喜欢
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 1970-01-01
      • 2023-04-05
      相关资源
      最近更新 更多