JavaScript, будучи языком Интернета, имеет встроенную поддержку работы с URL-адресами. Одной из распространенных задач, с которой сталкиваются разработчики, является проверка того, является ли заданная строка допустимым URL-адресом или нет. В этой статье мы рассмотрим различные методы проверки того, является ли строка JavaScript допустимым URL-адресом.

Подход 1: регулярные выражения

Один из наиболее распространенных методов проверки URL-адресов — использование регулярных выражений. Регулярное выражение — это шаблон, который используется для сопоставления строк. В этом случае мы можем использовать регулярное выражение для сопоставления со строкой, которая предназначена для представления URL-адреса.

Для сопоставления с URL-адресом можно использовать следующее регулярное выражение:

const urlRegex = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/i;

Разберем это регулярное выражение:

  • ^ соответствует началу строки
  • (https?|ftp) соответствует http, https или ftp
  • :\/\/ соответствует :// символам
  • [^\s/$.?#] соответствует любому символу, который не является пробелом, /, $, ., ? или #
  • . соответствует любому символу
  • [^\s]* соответствует нулю или более символам, не являющимся пробелами
  • $ соответствует концу строки
  • /i указывает, что регулярное выражение нечувствительно к регистру.

Используя это регулярное выражение, мы можем проверить, является ли данная строка допустимым URL-адресом, следующим образом:

function isUrl(url) {
  const urlRegex = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/i;
  return urlRegex.test(url);
}

// Example usage
console.log(isUrl("https://www.example.com")); // true
console.log(isUrl("http://localhost:3000/api/users")); // true
console.log(isUrl("ftp://ftp.example.com/file.txt")); // true
console.log(isUrl("not a valid url")); // false

Подход 2: URL API

Другой подход к проверке URL-адресов — использование встроенного API URL, доступного в современных браузерах и Node.js.

URL API позволяет разбивать строку URL на ее компоненты (такие как протокол, имя хоста, путь, параметры запроса и т. д.). Если заданная строка не является допустимым URL-адресом, то попытка проанализировать ее с помощью URL API приведет к ошибке.

Вот пример использования URL API для проверки того, является ли строка допустимым URL-адресом:

function isUrl(url) {
  try {
    new URL(url);
    return true;
  } catch (e) {
    return false;
  }
}

// Example usage
console.log(isUrl("https://www.example.com")); // true
console.log(isUrl("http://localhost:3000/api/users")); // true
console.log(isUrl("ftp://ftp.example.com/file.txt")); // true
console.log(isUrl("not a valid url")); // false

В этом примере мы создаем новый объект URL, используя заданную строку. Если строка является допустимым URL-адресом, то создание объекта завершится успешно, и мы вернем true. Если строка не является допустимым URL-адресом, создание объекта вызовет ошибку, которую мы поймаем и вернем false.

Обратите внимание, что URL API недоступен в старых браузерах, поэтому, если вам нужна поддержка старых браузеров, вам нужно будет использовать полифилл или откат к другому подходу.

Подход 3: использование библиотеки

Если вы часто работаете с URL-адресами в своем приложении, возможно, стоит использовать библиотеку, которая обеспечивает функциональность проверки и синтаксического анализа URL-адресов. Некоторые популярные варианты включают в себя:

  • url-parse: небольшая и быстрая библиотека для анализа URL-адресов.
  • valid-url: библиотека для проверки URL-адресов на основе различных ограничений (например, требование определенного протокола или имени хоста).
  • url-regex: регулярное выражение для сопоставления с URL-адресами.

Вот пример использования библиотеки valid-url для проверки URL-адресов:

const validUrl = require('valid-url');

function isUrl(url) {
  return validUrl.isUri(url);
}
// Example usage
console.log(isUrl("https://www.example.com")); // true
console.log(isUrl("http://localhost:3000/api/users")); // true
console.log(isUrl("ftp://ftp.example.com/file.txt")); // true
console.log(isUrl("not a valid url")); // false

Заключение

В этой статье мы рассмотрели различные методы проверки того, является ли строка JavaScript допустимым URL-адресом. Регулярные выражения обеспечивают простой и гибкий способ проверки URL-адресов, но могут быть подвержены ошибкам и сложны в обслуживании. URL API обеспечивает более надежный способ проверки URL-адресов, но может быть недоступен в старых браузерах. Использование библиотеки может упростить проверку URL-адресов и предоставить дополнительные функциональные возможности, но может добавить излишнюю сложность вашему приложению.

В конечном счете, выбранный вами подход будет зависеть от вашего конкретного варианта использования и требований вашего приложения. Понимая сильные и слабые стороны каждого подхода, вы можете принять обоснованное решение и убедиться, что ваше приложение правильно проверяет URL-адреса.

Дополнительные материалы на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .