Email Regular Expression Pattern
^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*
@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$;
Description
^ #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
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.
1. Java Regular Expression Example
Here’s a Java example to show you how to use regex to validate email address.
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. [email protected], [email protected], [email protected]
2. [email protected], [email protected], [email protected]
3. [email protected], [email protected]
4. [email protected], [email protected]
3. Invalid Emails
1. mkyong – must contains “@” symbol
2. [email protected] – tld can not start with dot “.”
3. [email protected] – “.a” is not a valid tld, last tld must contains at least two characters
4. [email protected] – tld can not start with dot “.”
5. [email protected] – tld can not start with dot “.”
6. [email protected] – email’s first character can not start with dot “.”
7. mkyong()*@gmail.com – email’s is only allow character, digit, underscore and dash
8. mkyong@%*.com – email’s tld is only allow character and digit
9. [email protected] – double dots “.” are not allow
10. [email protected] – email’s last character can not end with dot “.”
11. mkyong@[email protected] – double “@” is not allow
12. [email protected] -email’s tld which has two characters can not contains digit
4. Unit Test
Here’s a unit test using testNG.
package com.mkyong.regex;
import org.testng.Assert;
import org.testng.annotations.*;
/**
* Email validator Testing
*
* @author mkyong
*
*/
public class EmailValidatorTest {
private EmailValidator emailValidator;
@BeforeClass
public void initData() {
emailValidator = new EmailValidator();
}
@DataProvider
public Object[][] ValidEmailProvider() {
return new Object[][] { { new String[] { "[email protected]",
"[email protected]", "[email protected]",
"[email protected]", "[email protected]",
"[email protected]", "[email protected]",
"[email protected]", "[email protected]",
"[email protected]" } } };
}
@DataProvider
public Object[][] InvalidEmailProvider() {
return new Object[][] { { new String[] { "mkyong", "[email protected]",
"[email protected]", "[email protected]", "[email protected]",
"[email protected]", "mkyong()*@gmail.com", "mkyong@%*.com",
"[email protected]", "[email protected]",
"mkyong@[email protected]", "[email protected]" } } };
}
@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 : [email protected] , true
Email is valid : [email protected] , true
Email is valid : [email protected] , true
Email is valid : [email protected] , true
Email is valid : [email protected] , true
Email is valid : [email protected] , true
Email is valid : [email protected] , true
Email is valid : [email protected] , true
Email is valid : [email protected] , true
Email is valid : [email protected] , true
Email is valid : mkyong , false
Email is valid : [email protected] , false
Email is valid : [email protected] , false
Email is valid : [email protected] , false
Email is valid : [email protected] , false
Email is valid : [email protected] , false
Email is valid : mkyong()*@gmail.com , false
Email is valid : mkyong@%*.com , false
Email is valid : [email protected] , false
Email is valid : [email protected] , false
Email is valid : mkyong@[email protected] , false
Email is valid : [email protected] , false
PASSED: ValidEmailTest([Ljava.lang.String;@15f48262)
PASSED: InValidEmailTest([Ljava.lang.String;@789934d4)
===============================================
Default test
Tests run: 2, Failures: 0, Skips: 0
===============================================
Pingback: pirater un compte facebook()
Pingback: Zandi Rugs & Kilims & Tapestary()
Pingback: onlineqq()
Pingback: unlock her legs ebook()
Pingback: pirater un compte facebook()
Pingback: domino qiuqiu online()
Pingback: kralin yeri()
Pingback: Sarah()
Pingback: pirater un compte facebook()
Pingback: dentist()
Pingback: judi capsa online()
Pingback: Richard Warke()
Pingback: first butt plug()
Pingback: mcse courses london()
Pingback: teacher tshirt online()
Pingback: site()
Pingback: Jason Raphael Forex()
Pingback: capsa banting()
Pingback: Watch Movies()
Pingback: affordable piano lesson port moody bc()
Pingback: vaismedia.com()
Pingback: options alert()
Pingback: Grandeur Park Residence()
Pingback: viagra()
Pingback: bargain furniture()
Pingback: golf school()
Pingback: Plumbing Company Alpharetta()
Pingback: Process server Phoenix()
Pingback: vuelosdelalma.blogspot.com/2013/11/kampung-inggris-pare-kediri.html()
Pingback: the glades condo()
Pingback: pirater un compte facebook()
Pingback: kaybol()
Pingback: pic()