Java电子邮件验证–电子邮件正则表达式Java

本文介绍了如何使用Java正则表达式进行电子邮件验证。文章详细解释了有效和无效的电子邮件地址示例,并提供了一个Java程序来验证电子邮件地址,考虑了电子邮件地址的特殊字符、子域以及不区分大小写的特点。
摘要由CSDN通过智能技术生成

Today we will look into java email validation program. Sometimes we have to validate email address and we can use email regex for that. In the last post, I explained about java regular expression in detail with some examples. In this real-life example, I am trying to validate email addresses using java regular expression.

今天,我们将研究Java电子邮件验证程序。 有时我们必须验证电子邮件地址,并且可以为此使用电子邮件正则表达式。 在上一篇文章中,我通过一些示例详细解释了Java正则表达式 。 在这个真实的示例中,我尝试使用Java正则表达式来验证电子邮件地址。

Java电子邮件验证 (Java email validation)

If you look at the Wikipedia article for valid email address, it supports a lot of special characters. But to cover most of the valid email addresses, I am assuming an email address to consist of characters, digits and special characters +,-,. and _. Also, every email address must contain only one @ symbol.

如果您在Wikipedia文章中查找有效的电子邮件地址 ,则它支持许多特殊字符。 但是,为了覆盖大多数有效的电子邮件地址,我假设电子邮件地址包含字符,数字和特殊字符+,-、。 和_。 另外,每个电子邮件地址都只能包含一个@符号。

For the domain name, we can have subdomains also. So a subdomain can contain characters, digits and special characters – and _. Again subdomain can be of multiple levels like xyz.abc.com. So middle-level TLDs must start with a period (.) and it can contain characters, digits and special characters – and _. The last TLD should be of minimum length 2 and can contain words only.

对于域名,我们也可以有子域。 因此,子域可以包含字符,数字和特殊字符–和_。 同样,子域可以具有多个级别,例如xyz.abc.com 。 因此,中级顶级域名(TLD)必须以句点(。)开头,并且可以包含字符,数字和特殊字符-和_。 最后一个TLD的最小长度应为2,并且只能包含单词。

One more important thing to note is that email addresses are case insensitive. So we will use a case insensitive flag to create the pattern object.

需要注意的另一件事是电子邮件地址不区分大小写。 因此,我们将使用不区分大小写的标志来创建模式对象。

有效的电子邮件地址示例 (Valid email addresses example)

Taking all these into account some valid email addresses are:

考虑到所有这些因素,一些有效的电子邮件地址是:

  • journaldev@yahoo.com, journaldev-100@yahoo.com, journaldev.100@yahoo.com

    journaldev@yahoo.com,journaldev-100@yahoo.com,journaldev.100@yahoo.com
  • journaldev111@journaldev.com, journaldev-100@journaldev.net,journaldev.100@journaldev.com.au

    journaldev111@journaldev.com,journaldev-100 @ journaldev.net,journaldev.100 @ journaldev.com.au
  • journaldev@1.com,journaldev@gmail.com.com, journaldev+100@gmail.com

    journaldev @ 1.com,journaldev @ gmail.com.com,journaldev+100@gmail.com
  • journaldev-100@yahoo-test.com, journaldev_100@yahoo-test.ABC.CoM

    journaldev-100@yahoo-test.com,journaldev_100@yahoo-test.ABC.CoM

无效的电子邮件地址示例 (Invalid email addresses example)

Now let’s see some invalid email addresses are reason for them to be invalid.

现在,让我们看看一些无效的电子邮件地址是它们无效的原因。

  • journaldev – No @ symbole

    journaldev –否@ symbole
  • journaldev@.com.my – Dot after @ symbol

    journaldev @ .com.my – @符号后的点
  • journaldev123@gmail.a – last TLD length is less than 2

    journaldev123@gmail.a –最近的TLD长度小于2
  • journaldev123@@.com.com – Two @ symbols

    journaldev123 @@。com.com –两个@符号
  • .journaldev@journaldev.com – ID can’t start with .

    .journaldev @ journaldev.com – ID不能以开头。
  • journaldev()*@gmail.com – invalid special characters in the ID

    journaldev()* @ gmail.com – ID中的无效特殊字符
  • journaldev@%*.com – invalid special characters in the TLD

    journaldev@%*.com – TLD中的无效特殊字符
  • journaldev..2002@gmail.com – ID can’t have two dots

    journaldev..2002 @ gmail.com – ID不能有两个点
  • journaldev.@gmail.com – ID can’t end with dot

    journaldev。@ gmail.com – ID不能以点号结尾
  • journaldev@journaldev@gmail.com – Two @ symbols

    journaldev @ journaldev @ gmail.com –两个@符号
  • journaldev@gmail.com.1a – last TLD can have characters only

    journaldev@gmail.com.1a –最后一个TLD只能包含字符

电子邮件Regex Java程序 (Email Regex Java Program)

So using all the information for email validation in java, I have written the EmailValidator class that can be used to validate email address using a regular expression.

因此,使用Java中的所有信息进行电子邮件验证,我编写了EmailValidator类,该类可用于使用正则表达式来验证电子邮件地址。

package com.journaldev.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Java email validation program
 * 
 * @author pankaj
 *
 */
public class EmailValidator {
	// Email Regex java
	private static final String EMAIL_REGEX = "^[\\w-\\+]+(\\.[\\w]+)*@[\\w-]+(\\.[\\w]+)*(\\.[a-z]{2,})$";

	// static Pattern object, since pattern is fixed
	private static Pattern pattern;

	// non-static Matcher object because it's created from the input String
	private Matcher matcher;

	public EmailValidator() {
		// initialize the Pattern object
		pattern = Pattern.compile(EMAIL_REGEX, Pattern.CASE_INSENSITIVE);
	}

	/**
	 * This method validates the input email address with EMAIL_REGEX pattern
	 * 
	 * @param email
	 * @return boolean
	 */
	public boolean validateEmail(String email) {
		matcher = pattern.matcher(email);
		return matcher.matches();
	}
}

Now, we will test this email regex java class using another Class EmailValidatorTest.

现在,我们将使用另一个Class EmailValidatorTest来测试此电子邮件正则表达式Java类。

package com.journaldev.util;

public class EmailValidatorTest {

	// list of valid email addresses
	private static final String[] validEmailIds = new String[] { "journaldev@yahoo.com", "journaldev-100@yahoo.com",
			"journaldev.100@yahoo.com", "journaldev111@journaldev.com", "journaldev-100@journaldev.net",
			"journaldev.100@journaldev.com.au", "journaldev@1.com", "journaldev@gmail.com.com",
			"journaldev+100@gmail.com", "journaldev-100@yahoo-test.com", "journaldev_100@yahoo-test.ABC.CoM" };

	// list of invalid email addresses
	private static final String[] invalidEmailIds = new String[] { "journaldev", "journaldev@.com.my",
			"journaldev123@gmail.a", "journaldev123@.com", "journaldev123@.com.com", ".journaldev@journaldev.com",
			"journaldev()*@gmail.com", "journaldev@%*.com", "journaldev..2002@gmail.com", "journaldev.@gmail.com",
			"journaldev@journaldev@gmail.com", "journaldev@gmail.com.1a" };

	private static EmailValidator emailValidator;

	public static void main(String args[]) {
		emailValidator = new EmailValidator();
		for (String temp : validEmailIds) {
			boolean valid = emailValidator.validateEmail(temp);
			System.out.println("Email ID " + temp + " is valid? " + valid);
		}
		System.out.println("\n\n");
		for (String temp : invalidEmailIds) {
			boolean valid = emailValidator.validateEmail(temp);
			System.out.println("Email ID " + temp + " is valid? " + valid);
		}
	}
}

The output of the above java email validation example program is shown in the below image.

下图显示了上述Java电子邮件验证示例程序的输出。

Email ID journaldev@yahoo.com is valid? true
Email ID journaldev-100@yahoo.com is valid? true
Email ID journaldev.100@yahoo.com is valid? true
Email ID journaldev111@journaldev.com is valid? true
Email ID journaldev-100@journaldev.net is valid? true
Email ID journaldev.100@journaldev.com.au is valid? true
Email ID journaldev@1.com is valid? true
Email ID journaldev@gmail.com.com is valid? true
Email ID journaldev+100@gmail.com is valid? true
Email ID journaldev-100@yahoo-test.com is valid? true
Email ID journaldev_100@yahoo-test.ABC.CoM is valid? true



Email ID journaldev is valid? false
Email ID journaldev@.com.my is valid? false
Email ID journaldev123@gmail.a is valid? false
Email ID journaldev123@.com is valid? false
Email ID journaldev123@.com.com is valid? false
Email ID .journaldev@journaldev.com is valid? false
Email ID journaldev()*@gmail.com is valid? false
Email ID journaldev@%*.com is valid? false
Email ID journaldev..2002@gmail.com is valid? false
Email ID journaldev.@gmail.com is valid? false
Email ID journaldev@journaldev@gmail.com is valid? false
Email ID journaldev@gmail.com.1a is valid? false

So it seems that our email regex java program is working as expected, you can extend it easily if you want to add some more special characters. That’s all about java email validation example.

因此,我们的电子邮件正则表达式Java程序似乎可以正常运行,如果您想添加更多特殊字符,则可以轻松扩展它。 这就是有关Java电子邮件验证示例的全部内容。

GitHub Repository. GitHub Repository中检出更多正则表达式示例。

翻译自: https://www.journaldev.com/638/java-email-validation-regex

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值