在Java中验证电子邮件地址

时间:2020-02-23 14:34:42  来源:igfitidea点击:

在本教程中,我们将看到如何在Java中验证电子邮件地址。

有时需要验证用户提供的电子邮件地址。
我们可能希望编写自己的逻辑来验证电子邮件地址,但有很多标准的正则表达式或者库可以验证电子邮件地址并提供最佳结果。

电子邮件地址由本地部分,@和后跟域组成。
我们可以通过Wiki页面以获取电子邮件地址的格式。

使用正则表达式

我们可以使用OWASP验证Regex存储库提供的正则表达式,该存储库被认为是安全的,并将在大多数情况下解决目的。

这是正则表达式

^[a-zA-Z0-9_+&*-]+(?:\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,7}$

以下是Java中的电子邮件地址验证的完整Java程序

package org.igi.theitroad;
 
import java.util.regex.Pattern; 
 
public class EmailValidatorMain 
{ 
	public static boolean isValid(String email) 
	{ 
		String emailRegex = "^[a-zA-Z0-9_+&*-]+(?:\.[a-zA-Z0-9_+&*-]+)*@" +  //part before @
				"(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,7}$"; 
 
		Pattern pat = Pattern.compile(emailRegex); 
		if (email == null) 
			return false; 
		return pat.matcher(email).matches(); 
	} 
 
	/* driver function to check */
	public static void main(String[] args) 
	{ 
		String email1 = "[email protected]"; 
		String email2 = "@theitroad.com";
		String email3 = "[email protected]";
		String[] emails= {email1,email2,email3};
 
		for (int i = 0; i < emails.length; i++) {
			String email=emails[i];
			if (isValid(email)) 
				System.out.print(email+" is valid email"); 
			else
				System.out.print(email+" is invalid email"); 
			
			System.out.println();
		}
	} 
}

运行上面的程序时,我们将得到以下输出

[email protected] is valid email
@theitroad.com is invalid email
[email protected] is valid email

使用Apache Common Validator库

我们还可以使用Inbuilt Apache Librabry来验证地址。
如果我们使用的是maven,则需要在pom.xml中添加以下依赖项。

<!-- https://mvnrepository.com/artifact/commons-validator/commons-validator -->
<dependency>
    <groupId>commons-validator</groupId>
    <artifactId>commons-validator</artifactId>
    <version>1.4.0</version>
</dependency>

这是同一个的Java程序。

package org.igi.theitroad;
 
import org.apache.commons.validator.routines.EmailValidator;
 
public class EmailValidatorMain 
{ 
	public static boolean isValid(String email) 
	{ 
		//Get an EmailValidator instance first
		EmailValidator validator = EmailValidator.getInstance();
 
		//check valid email address
		if (!validator.isValid(email)) {
			return false;
		}
		return true;
	} 
 
	/* driver function to check */
	public static void main(String[] args) 
	{ 
		String email1 = "[email protected]"; 
		String email2 = "@theitroad.com";
		String email3 = "[email protected]";
		String[] emails= {email1,email2,email3};
 
		for (int i = 0; i < emails.length; i++) {
			String email=emails[i];
			if (isValid(email)) 
				System.out.print(email+" is valid email"); 
			else
				System.out.print(email+" is invalid email"); 
 
			System.out.println();
		}
	} 
}