package org.synyx.urlaubsverwaltung.web; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Util class to validate mail address. * * @author Aljona Murygina - murygina@synyx.de */ public final class MailAddressValidationUtil { // a regex for email addresses that are valid, but may be "strange looking" (e.g. tomr$2@example.com) // original from: http://www.markussipila.info/pub/emailvalidator.php?action=validate // modified by adding following characters: äöüß private static final String EMAIL_PATTERN = "^[a-zäöüß0-9,!#\\$%&'\\*\\+/=\\?\\^_`\\{\\|}~-]+(\\.[a-zäöüß0-9,!#\\$%&'\\*\\+/=\\?\\^_`\\{\\|}~-]+)*@" + "[a-zäöüß0-9-]+(\\.[a-zäöüß0-9-]+)*\\.([a-z]{2,})$"; private MailAddressValidationUtil() { // Hide constructor for util classes } /** * Checks if the provided mail address has a valid format, for example `marlene@firma.test`. * * @param mailAddress to be checked * * @return {@code true} if the provided mail address has a valid format, {@code false} else */ public static boolean hasValidFormat(String mailAddress) { String normalizedEmail = mailAddress.trim().toLowerCase(); return matchPattern(EMAIL_PATTERN, normalizedEmail); } private static boolean matchPattern(String nameOfPattern, String matchSequence) { Pattern pattern = Pattern.compile(nameOfPattern); Matcher matcher = pattern.matcher(matchSequence); return matcher.matches(); } }