我正在实施电子邮件验证方法。我尝试但无法解决,因为我不擅长正则表达式。规则很少,我正在逐一实施RegExp规则。如果一条规则有效,其他规则不起作用。
规则是
有效的是:
示例输入
julia@maddi.com
julia_@maddi.com
julia_0@maddi.com
julia0_@maddi.com
julia@gmail.com
示例输出
True
True
True
False
False
答案 0 :(得分:3)
尝试这种模式:
^[a-z]{1,6}_?\d{0,4}@[a-z0-9.-]+\.[a-z]{2,}$
请注意julia@gmail.com
实际上似乎是有效的电子邮件地址,因为前缀是五个字母,没有下划线。
我赞赏this site帮助处理上述正则表达式的域名部分。
答案 1 :(得分:0)
^[a-z]{1,6}_?\d{0,4}
^[a-z]{1,6}
首先是1到6个小写英文
由字符类[a-z]表示的字母。_?
小写字母后跟可选的下划线
(即零或一次出现)由_字符表示。\d{0,4}
可选的下划线后跟0到4个可选项
由字符类[0-9]表示的数字。要使其成为完整的正则表达式以验证整个电子邮件地址,请添加以下内容:
@.*\.[a-z]{2,}
说明:
@
- 后跟@ sign .*\.
- 匹配任何内容(贪婪)直到最后一点a-z]{2,}
- 匹配2个或更多的最后部分(com,net)等
字符所以最终的Regex成为:
^[a-z]{1,6}_?\d{0,4}@.*\.[a-z]{2,}$
答案 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