电子邮件验证正则表达式的java代码
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/25030857/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
java code for regex of email validation
提问by sina pouya
I tried to simulate email validation without regular expression in java and wrote this code. I need help to improve efficiency of this code (or give me a better way to solve this issue please)
我尝试在java中模拟没有正则表达式的电子邮件验证并编写了这段代码。我需要帮助来提高此代码的效率(或者请给我一个更好的方法来解决这个问题)
regular expression: ^[(a-zA-Z-0-9-\\_\\+\\.)]+@[(a-z-A-z)]+\\.[(a-zA-z)]{2,3}$
正则表达式: ^[(a-zA-Z-0-9-\\_\\+\\.)]+@[(a-z-A-z)]+\\.[(a-zA-z)]{2,3}$
public static boolean isValidEmailAddress(String email) {
boolean flag1 = false;
boolean flag2=false;
boolean flag3=false;
int j=0;
char[] emailChars = email.toCharArray();
for (int i = 0; i < emailChars.length;) {
char c = emailChars[i];
if (Character.isLetterOrDigit(c)) {
i++;
if(flag1==true&&flag2==true){
j++;
}
} else if (c == '@' && flag1==false&&flag2==false && flag3==false) {
i++;
flag1=true;
} else if(c=='.' && flag1==true && flag2==false&&flag3==false){
i++;
flag2 = true;
}
if(j==2 || j==3){
flag3=true;
}
}
return flag1&&flag2&&flag3;
}
回答by sina pouya
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EmailValidator {
private Pattern pattern;
private Matcher matcher;
private static final String EMAIL_PATTERN =
"^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$";
public EmailValidator() {
pattern = Pattern.compile(EMAIL_PATTERN);
}
/**
* Validate hex with regular expression
*
* @param hex
* hex for validation
* @return true valid hex, false invalid hex
*/
public boolean validate(final String hex) {
matcher = pattern.matcher(hex);
return matcher.matches();
}
}
回答by AlexR
Real world email validation is not so primitive task and it was already solved many times. I'd suggest you not to re-invent the wheel but use Apache Commons EmailValidator.
现实世界的电子邮件验证不是那么原始的任务,它已经解决了很多次。我建议您不要重新发明轮子,而是使用 Apache Commons EmailValidator。