【发布时间】:2014-04-04 07:09:00
【问题描述】:
我正在尝试根据给我的特定准则编写一些代码来验证电子邮件地址,其中一个准则是诸如 cath@[10.1.1] 之类的地址应该是有效的。我被卡住了,无法弄清楚我的正则表达式字符串有什么问题:
"[A-Za-z0-9._%+-]+[@|_at_]+[\\[|[A-Za-z0-9-]]+[0-9\\.|_dot_]+[\\]|com|com.au|co.ca|co.nz|co.us|co.uk]{2,4}"
这是一些示例输出:
Enter an email address
cath@[10.1.1]
cath@[10.1.1] is not a valid email address
cath@[10.1.1.a]
cath@[10.1.1.a] is a valid email address
cath@[10.1.1.]
cath@[10.1.1.] is a valid email address
最后两个输入/输出应该是无效的,而第一个应该是有效的。谁能指出我正确的方向?谢谢
编辑 - 这是我的代码,如果它可以帮助任何人
import java.util.*;
import java.lang.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EmailAddresses {
public static void main(String[] args) {
String line;
System.out.println("Enter an email address");
Scanner scan = new Scanner(System.in);
while (scan.hasNextLine()) {
line = scan.nextLine();
Pattern pattern = Pattern.compile("[A-Za-z0-9._%+-]+(?:@|_at_)(?:\\[|[A-Za-z0-9-])(?:0-9\\.|_dot_)(?:\\]|com|com\\.au|co\\.ca|co\\.nz|co\\.us|co\\.uk){2,4}");
Matcher mat = pattern.matcher(line);
if(mat.matches()){
line = line.toLowerCase();
System.out.println(line + " is a valid email address");
}else{
System.out.println(line + " is not a valid email address");
}
}
}
}
【问题讨论】:
-
你绝对需要使用 one 正则表达式吗?分开工作会更容易
-
不,我不必,我只是不知道我可以把它分开吗?
-
好吧,例如,开始尝试找到分隔符(
@或_at_),对其进行拆分,分别验证两个部分等
标签: java regex validation email