Java email validation using regex
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
package com.javadevjournal.regex.email;
|
||||
|
||||
public interface EmailValidation {
|
||||
|
||||
boolean validateEmailAddress(final String email);
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.javadevjournal.regex.email;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class EmailValidationWithDomain implements EmailValidation {
|
||||
|
||||
private static Pattern EMAIL_REGEX= Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,12}$", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
/**
|
||||
* This email validation use the regular expression to check the email pattern.
|
||||
* It also check the length of the domain name (e.g. .com , .net, .media etc). You can always modify
|
||||
* the regular expression to increase the length which checking the domain name character length
|
||||
* @param email
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean validateEmailAddress(String email) {
|
||||
final Matcher matcher = EMAIL_REGEX.matcher(email);
|
||||
return matcher.matches();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.javadevjournal.regex.email;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class EmailValidationWithDoubleDots implements EmailValidation {
|
||||
|
||||
private static Pattern EMAIL_REGEX= Pattern.compile("^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^-]+(?:\\\\.[a-zA-Z0-9_!#$%&'*+/=?`{|}~^-]+)*@[a-zA-Z0-9-]+(?:\\\\.[a-zA-Z0-9-]+)*$");
|
||||
|
||||
/**
|
||||
* Email validation regex to restrict leading, trailing dots. It also will check if the
|
||||
* email contains consecutive dots.
|
||||
* @param email
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean validateEmailAddress(String email) {
|
||||
final Matcher matcher = EMAIL_REGEX.matcher(email);
|
||||
return matcher.matches();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.javadevjournal.regex.email;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class RFC5322EmailValidation implements EmailValidation {
|
||||
|
||||
private static Pattern EMAIL_REGEX= Pattern.compile("^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^.-]+@[a-zA-Z0-9.-]+$", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
/**
|
||||
* Java regular expression to validate email using the RFC 5322. Keep in mind that it also allows
|
||||
* few characters which can pause security risks (e.g. | character)
|
||||
* @param email
|
||||
* @return boolean
|
||||
*/
|
||||
@Override
|
||||
public boolean validateEmailAddress(String email) {
|
||||
final Matcher matcher = EMAIL_REGEX.matcher(email);
|
||||
return matcher.matches();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.javadevjournal.regex.email;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* Class contains different utility methods to validate emails
|
||||
*/
|
||||
public class SimpleEmailValidation implements EmailValidation{
|
||||
|
||||
private static Pattern EMAIL_REGEX= Pattern.compile("^(.+)@(.+)$");
|
||||
|
||||
|
||||
/**
|
||||
* A simple validation which check for @ symbol and make sure there is
|
||||
* some character before and after the @ symbol
|
||||
* @param email
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean validateEmailAddress(String email) {
|
||||
final Matcher matcher = EMAIL_REGEX.matcher(email);
|
||||
return matcher.matches();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.javadevjournal.regex.email;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class W3CHTML5EmailValidation implements EmailValidation {
|
||||
|
||||
private static Pattern EMAIL_REGEX= Pattern.compile("^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$");
|
||||
|
||||
@Override
|
||||
public boolean validateEmailAddress(String email) {
|
||||
final Matcher matcher = EMAIL_REGEX.matcher(email);
|
||||
return matcher.matches();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.javadevjournal.regex.email;
|
||||
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
public class RFC5322SimpleEmailValidationTest {
|
||||
|
||||
@ParameterizedTest(name = "#{index} - Run test with email = {0}")
|
||||
@MethodSource("validEmailList")
|
||||
void valid_email_test(String email){
|
||||
|
||||
EmailValidation validation = new RFC5322EmailValidation();
|
||||
assertTrue(validation.validateEmailAddress(email));
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "#{index} - Run test with email = {0}")
|
||||
@MethodSource("invalidEmailList")
|
||||
void invalid_emails_test(String email){
|
||||
EmailValidation validation = new RFC5322EmailValidation();
|
||||
assertFalse(validation.validateEmailAddress(email));
|
||||
}
|
||||
|
||||
static List<String> validEmailList(){
|
||||
return Arrays.asList(
|
||||
"contact@javadevjournal.com",
|
||||
"contact.us@javadevjournal.com",
|
||||
"contact-us+1@javadevjournal.com",
|
||||
"contact?us+1@javadevjournal.com"
|
||||
);
|
||||
}
|
||||
|
||||
static List<String> invalidEmailList(){
|
||||
return Arrays.asList(
|
||||
"@javadevjournal.com",
|
||||
"test@dummy.com"
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.javadevjournal.regex.email;
|
||||
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
public class SimpleEmailValidationConsecutiveDotsTest {
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("validEmailList")
|
||||
void valid_email_test(String email){
|
||||
|
||||
EmailValidation validation = new EmailValidationWithDoubleDots();
|
||||
assertTrue(validation.validateEmailAddress(email));
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("invalidEmailList")
|
||||
void invalid_emails_test(String email){
|
||||
EmailValidation validation = new EmailValidationWithDoubleDots();
|
||||
assertFalse(validation.validateEmailAddress(email));
|
||||
}
|
||||
|
||||
static List<String> validEmailList(){
|
||||
return Arrays.asList(
|
||||
"contact@javadevjournal.com",
|
||||
"contact.us@javadevjournal.com",
|
||||
"contact-us+1@javadevjournal.com"
|
||||
|
||||
);
|
||||
}
|
||||
|
||||
static List<String> invalidEmailList(){
|
||||
return Arrays.asList(
|
||||
".@javadevjournal.com",
|
||||
"test@dummy.com.",
|
||||
"contact@javadevjournal..com"
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.javadevjournal.regex.email;
|
||||
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
public class SimpleEmailValidationNonLatinTest {
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("validEmailList")
|
||||
void validate_email(String email){
|
||||
|
||||
SimpleEmailValidation validation = new SimpleEmailValidation();
|
||||
// assertTrue(validation.validateNonLatinEamil(email));
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("invalidEmailList")
|
||||
void invalid_emails(String email){
|
||||
|
||||
SimpleEmailValidation validation = new SimpleEmailValidation();
|
||||
// assertTrue(validation.validateNonLatinEamil(email));
|
||||
}
|
||||
|
||||
static List<String> validEmailList(){
|
||||
return Arrays.asList(
|
||||
"contact@javadevjournal.com",
|
||||
"contact.us@javadevjournal.com",
|
||||
"contact-us+1@javadevjournal.com",
|
||||
"test@tüller.com"
|
||||
);
|
||||
}
|
||||
|
||||
static List<String> invalidEmailList(){
|
||||
return Arrays.asList(
|
||||
"contact.us#javadevjournal.com",
|
||||
"@javadevjournal.com",
|
||||
"test@test.corporate",
|
||||
"test@tüller.com"
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.javadevjournal.regex.email;
|
||||
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
public class SimpleEmailValidationWithDomainTest {
|
||||
|
||||
@ParameterizedTest(name = "#{index} - Test with email = {0}")
|
||||
@MethodSource("validEmailList")
|
||||
void validate_email_test(String email){
|
||||
|
||||
EmailValidation validation = new EmailValidationWithDomain();
|
||||
assertTrue(validation.validateEmailAddress(email));
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "#{index} - Test with email = {0}")
|
||||
@MethodSource("invalidEmailList")
|
||||
void invalid_emails_test(String email){
|
||||
|
||||
EmailValidation validation = new EmailValidationWithDomain();
|
||||
assertFalse(validation.validateEmailAddress(email));
|
||||
}
|
||||
|
||||
static List<String> validEmailList(){
|
||||
return Arrays.asList(
|
||||
"contact@javadevjournal.com",
|
||||
"contact.us@javadevjournal.com",
|
||||
"contact-us+1@javadevjournal.com",
|
||||
"test@javadevjournal.media.org",
|
||||
"test@test.corporations"
|
||||
);
|
||||
}
|
||||
|
||||
static List<String> invalidEmailList(){
|
||||
return Arrays.asList(
|
||||
"contact.us#javadevjournal.com",
|
||||
"@javadevjournal.com"
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.javadevjournal.regex.email;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.ValueSource;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
public class SimpleSimpleEmailValidationTest {
|
||||
|
||||
private static final Logger LOG = LogManager.getLogger(SimpleSimpleEmailValidationTest.class);
|
||||
|
||||
@DisplayName("Validate email using simple regex")
|
||||
@ParameterizedTest
|
||||
@ValueSource(strings = {"contact-us@javadevjournal.com",
|
||||
"contact@javadevjournal.com",
|
||||
"contact.us@javadevjournal.com",
|
||||
"contact-us+1@javadevjournal.com",
|
||||
//invalid emails
|
||||
"contact.us#javadevjournal.com",
|
||||
"@javadevjournal.com",
|
||||
"test@test.corporate"
|
||||
})
|
||||
void validate_email_simpleRegex(String email){
|
||||
|
||||
SimpleEmailValidation validation = new SimpleEmailValidation();
|
||||
assertTrue(validation.validateEmailAddress(email));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.javadevjournal.regex.email;
|
||||
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
public class W3CHTML5EmailValidationTest {
|
||||
|
||||
@ParameterizedTest(name = "#{index} - Run test with email = {0}")
|
||||
@MethodSource("validEmailList")
|
||||
void valid_email_test(String email){
|
||||
|
||||
EmailValidation validation = new W3CHTML5EmailValidation();
|
||||
assertTrue(validation.validateEmailAddress(email));
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "#{index} - Run test with email = {0}")
|
||||
@MethodSource("invalidEmailList")
|
||||
void invalid_emails_test(String email){
|
||||
EmailValidation validation = new W3CHTML5EmailValidation();
|
||||
assertFalse(validation.validateEmailAddress(email));
|
||||
}
|
||||
|
||||
static List<String> validEmailList(){
|
||||
return Arrays.asList(
|
||||
"contact@javadevjournal.com",
|
||||
"contact.us@javadevjournal.com",
|
||||
"contact-us+1@javadevjournal.com",
|
||||
"contact?us+1@javadevjournal.com"
|
||||
);
|
||||
}
|
||||
|
||||
static List<String> invalidEmailList(){
|
||||
return Arrays.asList(
|
||||
"@javadevjournal.com",
|
||||
"@javadevjournal..com",
|
||||
"test@dummy.com",
|
||||
"test@test.corporations",
|
||||
"test@126.1.1.1"
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user