All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.opsbears.webcomponents.validator.FormalDomainNameValidator Maven / Gradle / Ivy

The newest version!
package com.opsbears.webcomponents.validator;

import javax.annotation.Nonnull;
import java.net.IDN;
import java.util.regex.Pattern;

public class FormalDomainNameValidator implements DomainNameValidator {
    private static Pattern domainPattern;

    private static Pattern getLocalPartPattern() {
        if (domainPattern == null) {
            domainPattern = Pattern.compile(
                "\\A((xn--[a-zA-Z0-9]|[a-zA-Z0-9])([a-zA-Z0-9]|-[a-zA-Z0-9])*)" +
                "(\\.((xn--[a-zA-Z0-9]|[a-zA-Z0-9])([a-zA-Z0-9]|-[a-zA-Z0-9])*))*\\z"
            );
        }
        return domainPattern;
    }

    @Nonnull
    @Override
    public String getUniqueKey() {
        return "domain-name-format";
    }

    @Override
    public boolean isValidString(@Nonnull String value) {
        if (value.contains("\n")) {
            return false;
        }

        try {
            return getLocalPartPattern().matcher(IDN.toASCII(value)).matches();
        } catch (Exception e) {
            return false;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy