В библиотеке Validator.js для проверки доменных имен используется
метод isFQDN, предназначенный для валидации полностью
квалифицированных доменных имен (Fully Qualified Domain Name). Под этим
термином понимается строка, представляющая корректную структуру домена,
включающую поддомены, основное имя и домен верхнего уровня.
Базовая проверка ориентируется на соответствие домена стандартам DNS-структуры:
Простейший вызов:
const validator = require('validator');
validator.isFQDN('example.com');
Возвращаемое значение — логическое, отражающее корректность структуры.
isFQDNФункция поддерживает расширенные настройки, позволяющие адаптировать проверку под разные сценарии использования.
validator.isFQDN(str, options);
Ключевые параметры options:
require_tld Определяет обязательность наличия
домена верхнего уровня. При значении true строка
localhost будет считаться некорректной, тогда как
example.com — валидной.
allow_underscores Разрешает использование
символа _ в доменных частях. Это отклонение от строгого
RFC, но встречается в некоторых внутренних сетях.
allow_trailing_dot Позволяет завершающую точку в
домене (example.com.), что соответствует формату FQDN в
некоторых системах DNS.
allow_numeric_tld Разрешает числовые домены верхнего уровня, хотя в реальной DNS-инфраструктуре это редкий и нестандартный случай.
allow_wildcard Поддержка wildcard-доменов
(*.example.com), используемых в SSL-сертификатах и
маршрутизации.
Пример комплексной настройки:
validator.isFQDN('sub.example.com', {
require_tld: true,
allow_underscores: false,
allow_trailing_dot: false,
allow_numeric_tld: false,
allow_wildcard: false
});
Валидация строится на анализе сегментов, разделённых точками. Каждый сегмент (label) подчиняется отдельным правилам:
Пример корректной структуры:
api.service.example.com
Разбиение:
api — поддомен;service — поддомен второго уровня;example — домен второго уровня;com — домен верхнего уровня.Особое внимание уделяется TLD (Top-Level Domain). Validator.js сверяет последний сегмент с допустимыми правилами:
При включённой строгой проверке:
validator.isFQDN('example.c', { require_tld: true });
Результат будет false, так как однобуквенные TLD
считаются недопустимыми в большинстве сценариев.
Поддерживается неограниченная вложенность поддоменов при условии соблюдения лимитов DNS:
Пример глубокой структуры:
a.b.c.d.example.com
Validator.js не ограничивает количество уровней, если соблюдены синтаксические правила.
Современные доменные имена могут содержать символы Unicode. Для их поддержки используется преобразование в Punycode.
Пример:
münchen.de
В Punycode-форме:
xn--mnchen-3ya.de
Validator.js выполняет проверку через нормализацию, предполагая либо уже преобразованный формат, либо внутреннюю обработку IDN-строк.
Особенности проверки:
Wildcard-формат применяется в сертификатах и маршрутизации:
*.example.com
При включённой опции allow_wildcard проверка
допускает:
* только в начале;Пример:
validator.isFQDN('*.example.com', {
allow_wildcard: true
});
При работе с доменными именами часто встречаются типовые нарушения формата:
example..com;exa!mple.com;-example.com;Метод isFQDN часто используется в связке с
isURL, когда требуется выделение и проверка доменной
части.
validator.isURL('https://example.com');
Внутренняя логика проверки URL включает анализ домена, но
isFQDN применяется для изолированной валидации без
протоколов, портов и путей.
Разделение ответственности:
isURL — проверка полного адреса;isFQDN — проверка только доменной структуры.Валидация доменных имен используется в различных задачах:
Несмотря на универсальность, isFQDN не выполняет
DNS-запросы и не подтверждает существование домена. Проверка
ограничивается синтаксическим анализом.
Ключевые ограничения:
Структурная проверка ориентирована исключительно на формат, а не на сетевую доступность ресурса.