Валидация email в Validator.js реализуется через функцию
isEmail(value, options), которая позволяет контролировать
набор правил проверки строкового значения на соответствие формату
электронной почты. Гибкость достигается за счёт объекта параметров,
расширяющего стандартную проверку RFC-формата и позволяющего
адаптировать поведение под прикладные требования.
Функция имеет вид:
validator.isEmail(str [, options])
Где str — проверяемая строка, а options —
объект конфигурации, влияющий на строгие и дополнительные правила
валидации.
Основная особенность параметров заключается в том, что они не изменяют сам алгоритм синтаксического разбора email, а добавляют над ним дополнительные ограничения или расширения допустимых форматов.
Параметр allow_display_name разрешает использование
отображаемого имени перед email-адресом.
Пример допустимого значения при включённой опции:
John Smith <john@example.com>
При значении false такая форма считается невалидной,
поскольку допускается только «чистый» email без дополнительного
имени.
Особенность обработки заключается в том, что библиотека сначала выделяет email из конструкции display name, а затем применяет стандартную проверку к извлечённому адресу.
Параметр require_display_name задаёт противоположное
поведение: email без отображаемого имени считается невалидным.
Допустимая форма:
John Smith <john@example.com>
Недопустимая форма:
john@example.com
Данный параметр используется в системах, где имя отправителя является обязательной частью идентификации пользователя.
Опция allow_utf8_local_part расширяет допустимые символы
в локальной части email (до символа @), разрешая
использование Unicode.
Без этой настройки локальная часть ограничена ASCII-символами. С включённой опцией становятся допустимыми адреса вида:
пользователь@пример.рф
или
δοκιμή@domain.com
Это важно для интернационализированных email (EAI — Email Address Internationalization), где требуется поддержка национальных алфавитов.
Параметр require_tld управляет обязательностью доменной
зоны верхнего уровня (TLD).
При true адреса без TLD считаются некорректными:
user@localhost
При false подобные значения допускаются, что полезно в
тестовых окружениях или внутренних сетях.
Опция allow_ip_domain разрешает использование IP-адресов
вместо доменного имени.
Допустимые варианты:
user@[192.168.0.1]
user@[2001:db8::1]
Без включения параметра такие формы отклоняются. Это особенно актуально для систем, где почтовые серверы могут идентифицироваться напрямую через IP.
Параметр domain_specific_validation включает
дополнительные правила для конкретных доменов. Внутренне библиотека
может применять кастомные проверки для известных почтовых провайдеров,
учитывая их ограничения на длину, структуру или символы.
Поведение зависит от версии библиотеки и может включать проверку:
blacklisted_chars позволяет явно указать набор символов,
которые запрещены в email-адресе.
Пример конфигурации:
{
blacklisted_chars: '+*'
}
В этом случае любые адреса, содержащие указанные символы, будут отклоняться, даже если они формально соответствуют RFC-формату.
Параметр host_blacklist задаёт список запрещённых
доменов или хостов.
Пример:
{
host_blacklist: ['example.com', 'test.com']
}
Адреса с такими доменами считаются недопустимыми:
user@example.com
Механизм проверки применяется после выделения доменной части email.
Опция ignore_max_length отключает проверку максимальной
длины email-адреса (обычно 254 символа по стандарту RFC).
При включении параметра библиотека перестаёт ограничивать длину строки, что может быть полезно в нестандартных системах хранения или при тестировании.
При вызове isEmail параметры обрабатываются
последовательно:
Такой порядок важен, поскольку часть параметров влияет на предварительный разбор строки, а часть — на постфильтрацию результата.
Параметры могут использоваться совместно, создавая сложные правила валидации. Например, комбинация:
{
allow_display_name: true,
require_tld: false,
allow_utf8_local_part: true,
host_blacklist: ['test.com']
}
позволяет:
Такой подход используется в системах с разными уровнями доверия к источникам данных.
Несмотря на гибкость параметров, проверка email в библиотеке остаётся синтаксической, а не семантической. Это означает отсутствие проверки:
Параметры влияют только на формат и структуру строки, не затрагивая реальную доставляемость адреса.
При проектировании правил валидации обычно выделяются уровни строгости:
Такая градация формируется исключительно комбинацией параметров
isEmail, без необходимости изменения исходного кода
библиотеки.