使用正则表达式验证标识符

时间:2014-09-27 03:41:50

标签: java regex validation

您好我正在努力从最终的isValid方法返回什么我基本上需要检查一个电子邮件地址是否有效请求任何所有帮助表示赞赏。

public class EmailAddress {

    private static final String x = "[a - z]";
    private static final String y = "[a-z0-9]";
    private static final String id = x + y;

  private String address;

    public EmailAddress(String address) {
        this.address = address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getAddress() {
        return address;
    }

  /**
   * Verify that a string is an email address.
   * The string must obey the following (somewhat strict format)
   * <email>      ::= <identifier> @ <identifier> {. <identifier>}
   * <identifier> ::= letter { letter | digit }
   **/
  public boolean isValid() {

      if (address == null) return false;
      String check = (id + "@" + id + "{." + id + "}" );
      return
  }
}

这是我的JUtil测试代码:

public class TestEmail {

  private EmailAddress address;

  @Test
  public void replaceMe() {
    assertTrue(true);
  }

  @Test
  public void shouldAcceptJohnAtCsDotEdu() {
    EmailAddress ea = new EmailAddress("john@cs.edu");
    assertTrue( ea.isValid() );
  }
  @Test
  public void shouldNotAccept123AtCsDotEdu() {
    EmailAddress ea = new EmailAddress("123@cs.edu");
    assertFalse( ea.isValid() );
  }
}

编辑:这是我为项目制作的测试代码

1 个答案:

答案 0 :(得分:0)

想一想。&#34;有效&#34;电子邮件对你意味着什么?

我在 * 之前编写了一个使用正则表达式的电子邮件验证程序,其中(大部分)都遵守RFC 822,明确定义了有效的电子邮件

电子邮件验证复杂,因为有很多组件和部件。最终,简单地将电子邮件发送给最终用户以确定它是否有效可能更容易;如果他们可以回复,那么它是有效的。

但是,如果你想编写一个简单的验证器,请定义你的范围:

  • 您是否接受任何gTLD?
  • 您是否接受嵌入了+字符的电子邮件? (它是有效的,而且很遗憾大多数服务都不接受它)
  • 你关心宽度吗?

那里,您可以构建验证器。但是,你必须缩小你的范围。在电子邮件中检查有很多东西,有一些显而易见的事情可以在不发送电子邮件的情况下进行检查(即没有TLD)。

但你应该缩小你的范围。

*:是的,我非常后悔这个事实。