Метод isEmail в библиотеке validator.js предназначен для
строгой или гибко настраиваемой валидации строк на соответствие формату
электронного адреса. Проверка ориентирована на распространённые
стандарты электронной почты (включая RFC-подобные правила), но при этом
допускает настройку поведения под конкретные требования приложения.
Функция работает со строковым значением и возвращает булев результат:
true, если строка считается валидным email-адресом, и
false в противном случае.
isEmail(str [, options])
str Строка, которая проходит проверку. Любые нестроковые значения предварительно приводятся к строковому виду, однако корректность такого подхода зависит от контекста использования.
options (необязательный параметр) Объект конфигурации, позволяющий изменять поведение проверки.
Проверка email в Validator.js основывается на разбиении
адреса на две ключевые части:
@)@)Пример:
user.name@example.com
user.name — локальная частьexample.com — доменМетод анализирует допустимость символов, структуру домена, наличие запрещённых последовательностей и соответствие формату.
import validator from 'validator';
validator.isEmail('test@example.com'); // true
validator.isEmail('invalid-email'); // false
При отсутствии опций применяется стандартная строгая проверка, ориентированная на универсальные email-форматы.
По умолчанию допускаются:
._-Примеры допустимых значений:
john.doe@example.com
user_name@example.com
user-name@example.com
Доменная часть проверяется на:
Пример:
user@sub.domain.com
Метод предоставляет набор конфигурационных параметров, позволяющих адаптировать проверку под бизнес-логику.
Разрешает использование отображаемого имени перед email.
validator.isEmail('John Doe <john@example.com>', {
allow_display_name: true
});
Допустимые форматы:
John Doe <john@example.com>
"John Doe" <john@example.com>
Требует обязательного наличия отображаемого имени.
validator.isEmail('john@example.com', {
require_display_name: true
}); // false
Разрешает использование UTF-8 символов в локальной части.
validator.isEmail('пользователь@example.com', {
allow_utf8_local_part: true
});
Это полезно для международных систем, где поддерживаются нелатинские алфавиты.
Требует обязательного наличия домена верхнего уровня.
validator.isEmail('user@localhost', {
require_tld: true
}); // false
Используется для исключения локальных или тестовых адресов.
Разрешает использование IP-адреса вместо доменного имени.
validator.isEmail('user@[192.168.0.1]', {
allow_ip_domain: true
});
Допустимые форматы:
user@[127.0.0.1]
user@[2001:db8::1]
Включает дополнительные проверки, специфичные для отдельных доменов.
validator.isEmail('user@gmail.com', {
domain_specific_validation: true
});
Такая проверка может учитывать особенности конкретных почтовых сервисов.
Позволяет запретить определённые символы в email.
validator.isEmail('user!@example.com', {
blacklisted_chars: '!'
});
Метод возвращает false в следующих случаях:
@validator.isEmail('simple@example.com'); // true
validator.isEmail('user.name+tag@example.co.uk'); // true
validator.isEmail('user_name@example.io'); // true
validator.isEmail('plainaddress'); // false
validator.isEmail('@missinguser.com'); // false
validator.isEmail('user@.com'); // false
validator.isEmail('user@com'); // false
Поддержка интернационализированных доменов (IDN) требует
дополнительной обработки. Внутри Validator.js такие домены
могут конвертироваться в punycode-представление.
Пример:
münchen.de → xn--mnchen-3ya.de
При включённых соответствующих опциях проверка учитывает преобразование и допустимость результата.
Email-адреса в доменной части считаются регистронезависимыми. Локальная часть теоретически чувствительна к регистру, однако большинство почтовых систем трактуют её как регистронезависимую.
Метод isEmail не различает регистр при проверке
валидности структуры.
if (!validator.isEmail(email)) {
throw new Error('Некорректный email');
}
validator.isEmail(email, {
domain_specific_validation: true
});
validator.isEmail(email, {
require_tld: true,
allow_ip_domain: false
});
Несмотря на широкую применимость, метод не выполняет:
Валидация ограничивается синтаксическим анализом строки.
При передаче чисел, объектов или null происходит
приведение к строке, что может привести к неожиданным результатам:
validator.isEmail(null); // false
validator.isEmail(123); // false
Метод оптимизирован для использования в серверных и клиентских приложениях. Проверка выполняется за линейное время относительно длины строки, что делает его пригодным для массовой валидации форм и потоковых данных.
Регулярные выражения и внутренние правила строго структурированы, чтобы минимизировать риск экспоненциальной деградации производительности на некорректных входных данных.