Can someone help me please? I am not very familiar with regEx and I am trying to validate email addresses. The regEx and code that I have is:
public class TestRegExEmail {
public static void main(final String[] args) {
// List of valid URLs
List<String> validValues = new ArrayList<>();
validValues.add("wiliam@hotmail.com");
validValues.add("wiliam.ferraciolli@hotmail.com");
validValues.add("wiliam@hotmail.co.uk");
validValues.add("wiliam.ferraciolli@hotmail.co.uk");
validValues.add("wiliam_ferraciolli@hotmail.co.uk");
validValues.add("wiliam'ferraciolli@hotmail.co.uk");
validValues.add("wiliam334-1@mydomain.co.uk.me");
// List on invalid URLs
List<String> invalidValues = new ArrayList<>();
invalidValues.add("wiliam.ferraciolli@hotmail.com.dodge.too.many");
invalidValues.add("hwiliam@hotmail.com.otherdomain.uk.dodge");
invalidValues.add("wiliam.ferraciolli@hotmail.com.com.com.com");
invalidValues.add("wiliam.hotmail.com");
invalidValues.add("wiliam..ferraciolli@hotmail.com");
invalidValues.add("wiliam%ferraciolli.@hotmail.com");
invalidValues.add("wiliam$ferraciolli.@hotmail.com");
invalidValues.add("wiliam/ferraciolli.@hotmail.com");
// Pattern
String regex = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
Pattern pattern = Pattern.compile(regex);
// print valid emails
for (String s : validValues) {
Matcher matcher = pattern.matcher(s);
System.out.println(s + " // " + matcher.matches());
}
System.out.println();
// print invalid emails
for (String s : invalidValues) {
Matcher matcher = pattern.matcher(s);
System.out.println(s + " // " + matcher.matches());
}
}
}
This regEx works fine but fails on emails with apostrophes. The other issue is that it would be ideal to allow only 3 dots after the @ symbol. Any suggestions would be appreciated.
Regards