Email Regular Expression Pattern
Description
The combination means, email
address must start with “_A-Za-z0-9-\\+” , optional follow by
“.[_A-Za-z0-9-]“, and end with a “@” symbol. The email’s domain name
must start with “A-Za-z0-9-”, follow by first level Tld (.com, .net)
“.[A-Za-z0-9]” and optional follow by a second level Tld (.com.au,
.com.my) “\\.[A-Za-z]{2,}”, where second level Tld must start with a dot
“.” and length must equal or more than 2 characters.
2. Valid Emails
1. javatyro@yahoo.com, javatyro-100@yahoo.com, javatyro.100@yahoo.com
2. javatyro111@javatyro.com, javatyro-100@javatyro.net, javatyro.100@javatyro.com.au
3. javatyro@1.com, javatyro@gmail.com.com
4. javatyro+100@gmail.com, javatyro-100@yahoo-test.com
3. Invalid Emails
1. javatyro – must contains “@” symbol
2. javatyro@.com.my – tld can not start with dot “.”
3. javatyro123@gmail.a – “.a” is not a valid tld, last tld must contains at least two characters
4. javatyro123@.com – tld can not start with dot “.”
5. javatyro123@.com.com – tld can not start with dot “.”
6. .javatyro@javatyro.com – email’s first character can not start with dot “.”
7. javatyro()*@gmail.com – email’s is only allow character, digit, underscore and dash
8. javatyro@%*.com – email’s tld is only allow character and digit
9. javatyro..2002@gmail.com – double dots “.” are not allow
10. javatyro.@gmail.com – email’s last character can not end with dot “.”
11. javatyro@javatyro@gmail.com – double “@” is not allow
12. javatyro@gmail.com.1a -email’s tld which has two characters can not contains digit
4. Unit Test
Here’s a unit test using testNG.
Here’s the unit test result.
^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)* @[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$;
^ #start of the line [_A-Za-z0-9-\\+]+ # must start with string in the bracket [ ], must contains one or more (+) ( # start of group #1 \\.[_A-Za-z0-9-]+ # follow by a dot "." and string in the bracket [ ], must contains one or more (+) )* # end of group #1, this group is optional (*) @ # must contains a "@" symbol [A-Za-z0-9-]+ # follow by string in the bracket [ ], must contains one or more (+) ( # start of group #2 - first level TLD checking \\.[A-Za-z0-9]+ # follow by a dot "." and string in the bracket [ ], must contains one or more (+) )* # end of group #2, this group is optional (*) ( # start of group #3 - second level TLD checking \\.[A-Za-z]{2,} # follow by a dot "." and string in the bracket [ ], with minimum length of 2 ) # end of group #3 $ #end of the line
1. Java Regular Expression Example
Here’s a Java example to show you how to use regex to validate email address.
EmailValidator.java
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(); } }
2. Valid Emails
1. javatyro@yahoo.com, javatyro-100@yahoo.com, javatyro.100@yahoo.com
2. javatyro111@javatyro.com, javatyro-100@javatyro.net, javatyro.100@javatyro.com.au
3. javatyro@1.com, javatyro@gmail.com.com
4. javatyro+100@gmail.com, javatyro-100@yahoo-test.com
3. Invalid Emails
1. javatyro – must contains “@” symbol
2. javatyro@.com.my – tld can not start with dot “.”
3. javatyro123@gmail.a – “.a” is not a valid tld, last tld must contains at least two characters
4. javatyro123@.com – tld can not start with dot “.”
5. javatyro123@.com.com – tld can not start with dot “.”
6. .javatyro@javatyro.com – email’s first character can not start with dot “.”
7. javatyro()*@gmail.com – email’s is only allow character, digit, underscore and dash
8. javatyro@%*.com – email’s tld is only allow character and digit
9. javatyro..2002@gmail.com – double dots “.” are not allow
10. javatyro.@gmail.com – email’s last character can not end with dot “.”
11. javatyro@javatyro@gmail.com – double “@” is not allow
12. javatyro@gmail.com.1a -email’s tld which has two characters can not contains digit
4. Unit Test
Here’s a unit test using testNG.
EmailValidatorTest.java
package com.javatyro.regex; import org.testng.Assert; import org.testng.annotations.*; /** * Email validator Testing * * @author javatyro * */ public class EmailValidatorTest { private EmailValidator emailValidator; @BeforeClass public void initData() { emailValidator = new EmailValidator(); } @DataProvider public Object[][] ValidEmailProvider() { return new Object[][] { { new String[] { "javatyro@yahoo.com", "javatyro-100@yahoo.com", "javatyro.100@yahoo.com", "javatyro111@javatyro.com", "javatyro-100@javatyro.net", "javatyro.100@javatyro.com.au", "javatyro@1.com", "javatyro@gmail.com.com", "javatyro+100@gmail.com", "javatyro-100@yahoo-test.com" } } }; } @DataProvider public Object[][] InvalidEmailProvider() { return new Object[][] { { new String[] { "javatyro", "javatyro@.com.my", "javatyro123@gmail.a", "javatyro123@.com", "javatyro123@.com.com", ".javatyro@javatyro.com", "javatyro()*@gmail.com", "javatyro@%*.com", "javatyro..2002@gmail.com", "javatyro.@gmail.com", "javatyro@javatyro@gmail.com", "javatyro@gmail.com.1a" } } }; } @Test(dataProvider = "ValidEmailProvider") public void ValidEmailTest(String[] Email) { for (String temp : Email) { boolean valid = emailValidator.validate(temp); System.out.println("Email is valid : " + temp + " , " + valid); Assert.assertEquals(valid, true); } } @Test(dataProvider = "InvalidEmailProvider", dependsOnMethods = "ValidEmailTest") public void InValidEmailTest(String[] Email) { for (String temp : Email) { boolean valid = emailValidator.validate(temp); System.out.println("Email is valid : " + temp + " , " + valid); Assert.assertEquals(valid, false); } }}
Here’s the unit test result.
Email is valid : javatyro@yahoo.com , true Email is valid : javatyro-100@yahoo.com , true Email is valid : javatyro.100@yahoo.com , true Email is valid : javatyro111@javatyro.com , true Email is valid : javatyro-100@javatyro.net , true Email is valid : javatyro.100@javatyro.com.au , true Email is valid : javatyro@1.com , true Email is valid : javatyro@gmail.com.com , true Email is valid : javatyro+100@gmail.com , true Email is valid : javatyro-100@yahoo-test.com , true Email is valid : javatyro , false Email is valid : javatyro@.com.my , false Email is valid : javatyro123@gmail.a , false Email is valid : javatyro123@.com , false Email is valid : javatyro123@.com.com , false Email is valid : .javatyro@javatyro.com , false Email is valid : javatyro()*@gmail.com , false Email is valid : javatyro@%*.com , false Email is valid : javatyro..2002@gmail.com , false Email is valid : javatyro.@gmail.com , false Email is valid : javatyro@javatyro@gmail.com , false Email is valid : javatyro@gmail.com.1a , false PASSED: ValidEmailTest([Ljava.lang.String;@15f48262) PASSED: InValidEmailTest([Ljava.lang.String;@789934d4) =============================================== Default test Tests run: 2, Failures: 0, Skips: 0 ===============================================