RegExp电子邮件验证

时间:2018-01-22 05:38:39

标签: java regex preg-replace

我正在实施电子邮件验证方法。我尝试但无法解决,因为我不擅长正则表达式。规则很少,我正在逐一实施RegExp规则。如果一条规则有效,其他规则不起作用。

规则是

  1. 以字母类[a-z]表示的1到6个小写英文字母开头。
  2. 小写字母后跟一个由_字符表示的可选下划线(即零或一次出现)。
  3. 可选的下划线后跟0到4个可选数字,由字符类[0-9]表示。
  4. 有效的是:

    示例输入

    julia@maddi.com
    julia_@maddi.com
    julia_0@maddi.com
    julia0_@maddi.com
    julia@gmail.com
    

    示例输出

    True
    True
    True
    False
    False
    

3 个答案:

答案 0 :(得分:3)

尝试这种模式:

^[a-z]{1,6}_?\d{0,4}@[a-z0-9.-]+\.[a-z]{2,}$

Demo

请注意julia@gmail.com实际上似乎是有效的电子邮件地址,因为前缀是五个字母,没有下划线。

我赞赏this site帮助处理上述正则表达式的域名部分。

答案 1 :(得分:0)

^[a-z]{1,6}_?\d{0,4}
  1. ^[a-z]{1,6}首先是1到6个小写英文 由字符类[a-z]表示的字母。
  2. _?小写字母后跟可选的下划线 (即零或一次出现)由_字符表示。
  3. \d{0,4}可选的下划线后跟0到4个可选项 由字符类[0-9]表示的数字。
  4. 要使其成为完整的正则表达式以验证整个电子邮件地址,请添加以下内容:

    @.*\.[a-z]{2,}
    

    说明:

    1. @ - 后跟@ sign
    2. .*\. - 匹配任何内容(贪婪)直到最后一点
    3. [a-z]{2,} - 匹配2个或更多的最后部分(com,net)等 字符
    4. 所以最终的Regex成为:

      ^[a-z]{1,6}_?\d{0,4}@.*\.[a-z]{2,}$
      

      Regex Demo

答案 2 :(得分:0)

要获得您想要的确切结果,您可能会发现一些有用的代码

    String SUPPORTED_DOMAIN="maddi.com";
    String emails[] = { "julia@maddi.com", "julia_@maddi.com", "julia_0@maddi.com", "julia0_@maddi.com",
            "julia@gmail.com" };
    String patternst = "^[a-z]{1,6}_?\\d{0,4}@"+SUPPORTED_DOMAIN;
    Pattern pattern = Pattern.compile(patternst);
    for (String email : emails) {
        Matcher matcher = pattern.matcher(email);
        if (matcher.find()) {
            System.out.println("True");
        } else {
            System.out.println("False");
        }
    }

输出

True
True
True
False
False