Source code for validators.domain

import re

from .utils import validator

pattern = re.compile(
    r'^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|'
    r'([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|'
    r'([a-zA-Z0-9][-_.a-zA-Z0-9]{0,61}[a-zA-Z0-9]))\.'
    r'([a-zA-Z]{2,13}|[a-zA-Z0-9-]{2,30}.[a-zA-Z]{2,3})$'
)


@validator
[docs]def domain(value): """ Return whether or not given value is a valid domain. If the value is valid domain name this function returns ``True``, otherwise :class:`~validators.utils.ValidationFailure`. Examples:: >>> domain('example.com') True >>> domain('example.com/') ValidationFailure(func=domain, ...) Supports IDN domains as well:: >>> domain('xn----gtbspbbmkef.xn--p1ai') True .. versionadded:: 0.9 .. versionchanged:: 0.10 Added support for internationalized domain name (IDN) validation. :param value: domain string to validate """ return pattern.match(value)