在java中验证电子邮件格式[重复]
Posted
技术标签:
【中文标题】在java中验证电子邮件格式[重复]【英文标题】:Validating email format in java [duplicate] 【发布时间】:2014-12-12 23:00:27 【问题描述】:我需要验证以alphabat
开头并以@gmail.com
结尾的电子邮件模式。以下是我的代码。
public static boolean isValidEmail(String email)
String endPattern = "@gmail.com";
if(null == email)
return false;
if(email.length()<10)
return false;
if(!email.endsWith(endPattern))
return false;
String[] strArr = email.split(endPattern);
String mailId = strArr[0];
if(!Character.isLetter((mailId.charAt(0))))
return false;
return true;
有没有更好的方法来实现这一点?正则表达式还是更好的代码?
【问题讨论】:
【参考方案1】:使用正则表达式
public static boolean isValidEmail(String email)
if (email != null)
Pattern p = Pattern.compile("^[A-Za-z].*?@gmail\\.com$");
Matcher m = p.matcher(email);
return m.find();
return false;
【讨论】:
【参考方案2】:使用matches方法检查字符串是否以字母开头并以字符串@gmail.com
结尾
System.out.println("foo@gmail.com".matches("[A-Za-z].*?@gmail\\.com"));
System.out.println("8foo@gmail.com".matches("[A-Za-z].*?@gmail\\.com"));
输出:
true
false
【讨论】:
【参考方案3】:public class Main
public static void main(String[] args)
String EMAIL_REGEX = "^[\\w-_\\.+]*[\\w-_\\.]\\
@([\\w]+\\.)+[\\w]+[\\w]$";
String email1 = "user@domain.com";
Boolean b = email1.matches(EMAIL_REGEX);
System.out.println("is e-mail: "+email1+" :Valid = " + b);
String email2 = "user^domain.co.in";
b = email2.matches(EMAIL_REGEX);
System.out.println("is e-mail: "+email2
+" :Valid = " + b);
【讨论】:
【参考方案4】:根据谷歌,
电子邮件地址
应该以字母或数字开头 只能包含字母 (a-z)、数字和句点。 应至少为 6 个字符正则表达式应该是
Pattern p = Pattern.compile("^[_A-Za-z0-9]+[\\.[A-Za-z0-9]5,@gmail\\.com$");
【讨论】:
除非gmail在某处列出了严格的要求,否则限制太多了。 根据 Google,您只能使用字母 (a-z)、数字和句点。 很好,不知道,有这个要求的链接吗? (供将来参考) 嗯,没有文件。但是,当您创建一个新的电子邮件帐户时,谷歌验证并显示一条消息“请仅使用字母 (a-z)、数字和句点。” 电子邮件地址也可以包含“+”号。【参考方案5】:package com.mkyong.regex;
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();
【讨论】:
【参考方案6】:这是javascript代码
<script>
function checkEmail()
var feedback="";
var email=document.getElementById("email").value;
var count=email.length;
var atpos=email.indexOf('@');
var atdot=email.lastIndexOf('.');
var tld=email.substring(atdot);
if(atpos<1 || atdot<1)
alert("Email is Not Valid");
else if(atpos>atdot)
alert("Email is Not Valid");
else
alert("Email is Valid");
【讨论】:
Javascript != Java
客户端 != 服务器端以上是关于在java中验证电子邮件格式[重复]的主要内容,如果未能解决你的问题,请参考以下文章