Метод isURL в библиотеке validator.js предназначен для проверки строк на соответствие формату URL. Он используется для валидации пользовательского ввода, обработки ссылок, фильтрации данных и обеспечения корректности адресов ресурсов в веб-приложениях.
Функция анализирует строку и определяет, является ли она допустимым URL согласно набору правил, которые могут быть настроены через параметры. Поддерживаются как стандартные HTTP(S)-адреса, так и более широкие сценарии (например, FTP, локальные адреса, протоколы без явного указания схемы).
Функция isURL имеет следующий базовый вид:
isURL(str [, options])
str — проверяемая строкаoptions — объект конфигурации, определяющий правила
валидацииВозвращаемое значение — boolean:
true — строка соответствует формату URLfalse — строка не является корректным URLБез дополнительных параметров проверка ориентируется на стандартные URL-адреса с протоколом и доменным именем:
validator.isURL('https://example.com'); // true
validator.isURL('http://example.com'); // true
validator.isURL('example.com'); // false
По умолчанию требование наличия протокола зависит от конфигурации библиотеки, но в большинстве случаев строгая проверка предполагает его обязательное указание.
Определяет список разрешённых протоколов.
{
protocols: ['http', 'https', 'ftp']
}
Если строка использует протокол, не входящий в список, результат
будет false.
Пример:
validator.isURL('ftp://example.com', {
protocols: ['http', 'https']
}); // false
Определяет, обязателен ли протокол в строке.
{
require_protocol: true
}
Пример поведения:
validator.isURL('example.com', {
require_protocol: true
}); // false
Указывает, обязательно ли наличие хоста (доменного имени или IP).
{
require_host: true
}
Этот параметр предотвращает валидные по синтаксису, но неполные URL.
Контролирует проверку допустимости протокола как синтаксически корректного.
{
require_valid_protocol: true
}
Пример:
validator.isURL('ht!tp://example.com', {
require_valid_protocol: true
}); // false
Разрешает использование символа подчёркивания в доменной части.
{
allow_underscores: true
}
Без этого параметра адреса вида my_site.com могут
считаться некорректными.
Разрешает точку в конце доменного имени.
{
allow_trailing_dot: true
}
Пример:
validator.isURL('https://example.com.', {
allow_trailing_dot: true
}); // true
Разрешает URL без указания протокола, начинающиеся с
//.
{
allow_protocol_relative_urls: true
}
Пример:
validator.isURL('//example.com', {
allow_protocol_relative_urls: true
}); // true
Наиболее распространённые варианты:
validator.isURL('https://example.com/page'); // true
validator.isURL('http://example.com'); // true
Поддерживаются адреса с указанием порта:
validator.isURL('http://example.com:8080'); // true
Проверка допускает наличие путей и параметров:
validator.isURL('https://example.com/search?q=test&lang=ru'); // true
Поддерживаются якорные ссылки:
validator.isURL('https://example.com/page#section'); // true
Валидация URL в isURL не является полноценным парсером RFC 3986. Она ориентирована на практическую проверку пользовательского ввода, а не на полное соответствие стандарту URI.
Ключевые особенности:
validator.isURL(input, {
protocols: ['http', 'https'],
require_protocol: true,
require_host: true,
allow_underscores: false
});
Такой режим используется для проверки ссылок, которые будут открываться в браузере.
validator.isURL(input, {
require_protocol: false,
allow_protocol_relative_urls: true,
allow_underscores: true
});
Подходит для форм, где пользователь может вводить неполные ссылки.
Без явного указания protocols результат может отличаться от ожидаемого, особенно при работе с нестандартными схемами.
Чрезмерное ограничение параметров приводит к отклонению валидных, но нестандартных URL.
Адреса вида //example.com часто используются в
веб-разработке, но могут быть отклонены при строгих настройках.
Поддержка IDN (Internationalized Domain Names) зависит от окружения и версии библиотеки. В некоторых случаях требуется предварительная нормализация домена в punycode.
validator.isURL('https://xn--e1afmkfd.xn--p1ai'); // true
Метод isURL оптимизирован для массовой валидации строк. Он используется в сценариях, где требуется обработка больших объёмов пользовательских данных в реальном времени. Основная нагрузка связана с регулярными выражениями и разбором структуры строки, поэтому при пакетной проверке рекомендуется минимизировать повторные вызовы с одинаковыми значениями.
Строгий режим:
Мягкий режим:
Такое разделение позволяет адаптировать isURL под разные уровни требований: от пользовательских форм до серверной валидации критических данных.