Как проверить, является ли строка правильным URL-адресом в JavaScript?
URL–адрес или унифицированный указатель ресурсов - это текст, используемый для идентификации ресурсов, таких как веб-страницы, изображения и видео в сети Интернет.
URL–адреса состоят из нескольких частей - протокола, имени домена и т. д., которые сообщают браузеру, как и где получить ресурс запрашиваемый ресурс.
В данной статье мы рассмотрим несколько способов в JavaScript проверить, является ли строка правильным URL-адресом.
Способ №1: Регулярные выражения
Регулярные выражения (regex) - это шаблоны, которые соответствуют комбинациям символов в строке. В JavaScript регулярные выражения также известны как объекты, которые предоставляют различные методы для выполнения различных операций.
Регулярное выражение можно создать двумя способами:
- С помощью литералов регулярных выражений
- С помощью конструкторов регулярных выражений
Рассмотрим каждый.
Как использовать литералы регулярных выражений
В литерале регулярного выражения шаблон заключен между косыми чертами, как на примере ниже.
Шаблон включает в себя проверку частей, обязательных для URL. Например, протокол https, два прямых слэша // и так далее.
const urlPattern = /(?:https?):\/\/(\w+:?\w*)?(\S+)(:\d+)?(\/|\/([\w#!:.?+=&%!\-\/]))?/;
Как использовать конструктор регулярных выражений
Чтобы создать регулярное выражение с использованием метода-конструктора, используется конструктор класса RegExp() в который передается шаблон регулярного выражения в качестве параметра.
const urlPattern = new RegExp('(?:https?):\/\/(\w+:?\w*)?(\S+)(:\d+)?(\/|\/([\w#!:.?+=&%!\-\/]))?');
Чтобы продемонстрировать, как проверить, является ли строка a URL, давайте создадим функцию, которая будет осуществлять эту проверку с помощью конструктора регулярного выражения.
const isGoodUrl = urlString => {
// объект регулярного выражения
const urlPattern = new RegExp('^(https?:\\/\\/)?' + // проверка протокола
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // проверка имени домена
'((\\d{1,3}\\.){3}\\d{1,3}))' + // проверка ip адреса (версия 4, не 6)
'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // проверка порта и пути
'(\\?[;&a-z\\d%_.~+=-]*)?' + // проверка параметров запроса
'(\\#[-a-z\\d_]*)?$','i'); // проверка хэша
// сама проверка
return !!urlPattern.test(urlString);
}
Теперь протестируем нашу функцию:
let url = "myrusakov";
console.log(isGoodUrl(url)); //false
url = "htt//myrus"; //false
console.log(isGoodUrl(url));
url = "www.myrusakov.com"; //true
console.log(isGoodUrl(url));
url = "https://www.myrusakov.com"; //true
console.log(isGoodUrl(url));
url = "https://www.myrusakov.ru/js-validate-url-part-1.html";
console.log(isGoodUrl(url)); //true
Таким образом вот так, с помощью регулярных выражений можно протестировать URL-адрес на корректность. В следующих статьях рассмотрим другие способы валидации URL-адресов в JavaScript.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.