Доменные имена в веб-разработке представляют собой структурированные строки, которые подчиняются строгим правилам синтаксиса: наличие допустимых символов, корректное разделение на уровни, соблюдение ограничений длины и корректность доменной зоны верхнего уровня. В Validator.js для таких проверок используется функциональность, связанная с анализом FQDN (Fully Qualified Domain Name).
Основным инструментом для проверки доменных имён в Validator.js
является метод isFQDN. Он предназначен для определения,
соответствует ли строка формату полностью квалифицированного доменного
имени.
import validator from 'validator';
validator.isFQDN('example.com');
Результат проверки возвращает булево значение. При корректном домене
функция вернёт true, при нарушении правил —
false.
FQDN рассматривается как цепочка меток, разделённых точками. Каждая метка должна соответствовать набору требований: допустимые символы, отсутствие запрещённых комбинаций и корректная длина.
Доменные имена состоят из нескольких уровней:
api)example)com)Пример:
api.service.example.com
При проверке Validator.js анализирует:
_ по
умолчанию запрещён)Метод isFQDN поддерживает набор опций, которые позволяют
адаптировать проверку под разные сценарии.
Определяет, обязателен ли домен верхнего уровня.
validator.isFQDN('localhost', { require_tld: false });
Если параметр установлен в true, строки без зоны
(example) будут считаться некорректными.
Разрешает использование символа подчёркивания.
validator.isFQDN('my_service.example.com', { allow_underscores: true });
По умолчанию подчёркивания запрещены, так как они не соответствуют стандарту DNS, но в некоторых внутренних сетях и legacy-системах они встречаются.
Позволяет использовать числовые домены верхнего уровня.
validator.isFQDN('example.123', { allow_numeric_tld: true });
В стандартной конфигурации такие значения считаются недопустимыми, поскольку TLD обычно состоит из буквенных символов.
Разрешает завершающую точку в домене.
validator.isFQDN('example.com.', { allow_trailing_dot: true });
Точка в конце доменного имени иногда используется в DNS-контексте для обозначения абсолютного доменного имени.
Validator.js поддерживает проверку интернационализированных доменных имён, содержащих символы Unicode. Такие домены преобразуются в Punycode перед проверкой.
Пример:
validator.isFQDN('пример.рф');
Внутренне строка будет приведена к виду:
xn--e1afmkfd.xn--p1ai
Это позволяет унифицировать проверку и работать с международными доменными зонами без нарушения стандартов DNS.
При использовании isFQDN часто встречаются ошибки,
связанные с неправильным пониманием структуры домена.
validator.isFQDN('exa$mple.com'); // false
Символ $ не входит в допустимый набор.
validator.isFQDN('-example.com'); // false
validator.isFQDN('example-.com'); // false
Дефис не может находиться в начале или конце метки.
validator.isFQDN('example..com'); // false
Пустая метка между точками нарушает структуру FQDN.
Хотя isFQDN проверяет только доменное имя,
isURL охватывает более широкий контекст, включая протокол,
путь, параметры и порт.
validator.isURL('https://example.com/path');
validator.isFQDN('example.com');
Использование isFQDN предпочтительно, когда требуется
проверка именно доменной части без учёта URL-структуры.
В реальных приложениях проверка домена часто комбинируется с другими методами Validator.js:
validator.isFQDN(domain) && validator.isLength(domain, { max: 253 });
или в составе валидации URL:
validator.isURL(url, {
require_host: true,
host_whitelist: null
});
Проверка доменных имён используется в различных сценариях:
В серверной логике важно учитывать, что isFQDN не
выполняет DNS-резолвинг, а лишь проверяет синтаксическую корректность
строки.
При массовой валидации доменов стоит учитывать производительность. Validator.js выполняет проверку на уровне строки без сетевых запросов, что делает его подходящим для высоконагруженных систем.
Также важно учитывать различие между:
Эти уровни проверки часто разделяются, чтобы избежать лишних сетевых операций.
Некоторые домены формально могут проходить проверку, но вызывать проблемы в реальных системах:
localhost,
localdomain)Для таких случаев используются дополнительные настройки
require_tld: false или кастомные whitelist-списки.
validator.isFQDN('localhost', {
require_tld: false
});
При обработке пользовательского ввода домен часто является частью более сложных структур:
user@example.com)https://example.com)Validator.js позволяет разделять ответственность: сначала извлекается
доменная часть, затем применяется isFQDN, после чего
результат комбинируется с другими проверками (например,
isEmail, isURL, isIP).
Такой подход снижает вероятность ошибок и делает систему валидации более предсказуемой.