【问题标题】:validate that an email address contains "@" and "."验证电子邮件地址是否包含“@”和“.”
【发布时间】:2011-08-22 18:44:37
【问题描述】:

我需要验证插入的电子邮件地址是否包含“@”和“。”没有正则表达式。 谁能给我“java代码”和“结构图”的例子吗?

【问题讨论】:

  • 你的意思是地址是just“@”还是“.”?或者验证它们是否包含“@”和“.”。
  • 你……真的看过吗? (或者实际上尝试什么?)这类问题远非“罕见”。
  • 抱歉,请验证电子邮件是否包含“@”和“.”
  • “有人给我”通常不起作用 - 展示你所拥有的。

标签: java email validation email-address


【解决方案1】:
int dot = address.indexOf('.');
int at = address.indexOf('@', dot + 1);

if(dot == -1 || at == -1 || address.length() == 2) {
  // handle bad address
}

这不是完整的解决方案。您将不得不检查 @ 和仅使用“。”的地址的多次出现。和“@”。

【讨论】:

    【解决方案2】:

    您可以搜索第一个“@”,然后检查“@”左侧的内容是否为有效字符串(即它没有空格或其他任何内容)。之后,您应该在右侧搜索“.”,并检查两个字符串是否为有效域。

    这是一个相当弱的测试。无论如何,我建议使用正则表达式。

    【讨论】:

      【解决方案3】:

      怀疑你在追求类似的东西:

      if (!address.contains("@") || !address.contains("."))
      {
          // Handle bad address
      }
      

      编辑:当然,这远非完整的验证。这还只是验证的开始 - 但希望这能让你处理你想要处理的特殊情况。

      【讨论】:

      • 还是很糟糕。 “.@”甚至不接近有效地址:)
      • @Kaj:当然。这远不是一个完整的验证——我只是回答被问到的问题。
      【解决方案4】:

      您还可以使用 Java 邮件 API。具体来说,这里:

      http://javamail.kenai.com/nonav/javadocs/javax/mail/internet/InternetAddress.html#InternetAddress(java.lang.String,布尔值)

      【讨论】:

        【解决方案5】:

        你可以使用commons-validator,特别是EmailValidator.isValid()

        【讨论】:

        • 我喜欢这种绝对、完全没有记录函数检查内容的方式。
        【解决方案6】:

        根据我的个人经验,验证电子邮件地址的唯一方法是发送带有验证链接或代码的电子邮件。 我尝试了许多验证器,但它们并不完整,因为电子邮件地址可能非常松散......

        【讨论】:

        • 即使您能够向某个地址发送电子邮件,也不能证明它是“有效的”(假设您将“有效”定义为“遵循 RFC”。
        • @Brian :“带有验证链接或代码”,即通过单击链接,用户确认所提供的电子邮件是一种有效的通信方式。我还探索了 appache 实用程序,但我们有一些外国客户抱怨我们的系统使用拒绝他们的有效电子邮件地址。
        • 我反对您声称成功发送电子邮件意味着该电子邮件有效的说法。即,即使用户点击了链接,他们的电子邮件地址也可能无效(他们甚至可能正在点击链接或其他任何内容)。这是一个迂腐的观点,但当您拥有多个邮件发送系统时,它确实变得相关。有些 API 对向“无效”电子邮件地址发送电子邮件有点挑剔。例如,发送到包含变音符号的电子邮件地址只会在某些邮件系统和 API 中成功。
        【解决方案7】:

        如果您不允许使用正则表达式,请使用 String.indexOf,但我建议您不要在输入期间验证地址。

        最好发送激活邮件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-30
          • 2017-11-15
          • 2014-06-12
          • 1970-01-01
          • 1970-01-01
          • 2011-03-04
          • 2011-02-14
          相关资源
          最近更新 更多