Проверьте, является ли строка в JavaScript URL-адресом
Существует ли способ в JavaScript проверить, является ли строка URL?
Исключены регулярные выражения, поскольку URL, скорее всего, может быть записан как stackoverflow
; другими словами, в нем может отсутствовать .com
, www
или http
.
5 ответ(ов)
В вашем коде используется функция isValidURL
, которая проверяет, является ли строка действительным URL-адресом с учетом наличия или отсутствия префикса http
или https
.
Вот код функции:
function isValidURL(string) {
var res = string.match(/(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g);
return (res !== null)
};
Далее вы тестируете ее с несколькими примерами:
testCase1
возвращаетtrue
, так как это валидный URL.testCase2
также возвращаетtrue
— это длинный, но корректный URL.testCase3
возвращаетfalse
, поскольку это не полный URL (нет домена).testCase4
,testCase5
, иtestCase7
тоже возвращаютfalse
, поскольку это не валидные URL.testCase6
возвращаетtrue
— это валидный адрес StackOverflow.testCase8
возвращаетfalse
, так как домен слишком длинный и не соответствует ожидаемым критериям.
Если вам нужно улучшить эту функцию или добавить поддержку других форматов URL, можете использовать более комплексные регулярные выражения или библиотеки, такие как validator.js
, которые обеспечивают более широкий диапазон проверки.
Чтобы провести валидацию URL с помощью JavaScript, вы можете использовать следующий код:
function ValidURL(str) {
var regex = /(?:https?):\/\/(\w+:?\w*)?(\S+)(:\d+)?(\/|\/([\w#!:.?+=&%!\-\/]))?/;
if(!regex.test(str)) {
alert("Пожалуйста, введите корректный URL.");
return false;
} else {
return true;
}
}
В этом коде мы определяем функцию ValidURL
, которая принимает строку str
в качестве аргумента. Мы используем регулярное выражение для проверки, соответствует ли строка формату URL. Если строка не проходит проверку, отображается предупреждение с просьбой ввести корректный URL, и функция возвращает false
. В противном случае функция возвращает true
, что означает, что URL является допустимым.
Чтобы проверить, является ли строка корректным URL в вашем приложении, вы можете воспользоваться библиотекой valid-url
. Вот пример того, как это можно сделать:
import { isWebUri } from 'valid-url';
function validateUrl(url) {
if (!isWebUri(url)) {
return "Некорректный URL.";
}
return "URL действителен.";
}
В данном коде мы импортируем функцию isWebUri
из библиотеки valid-url
. Затем в функции validateUrl
проверяем, является ли переданная строка корректным URL. Если нет, возвращаем сообщение о некорректности URL, в противном случае — сообщение о валидности.
Убедитесь, что вы установили библиотеку valid-url
перед использованием:
npm install valid-url
Таким образом, использование этой библиотеки значительно упрощает проверку валидности URL.
Эта функция запрещает использование localhost
и разрешает только URL-адреса для веб-страниц (т.е. допускаются только протоколы http
или https
).
Также она разрешает только безопасные символы, как определяется здесь: безопасные символы.
function isValidWebUrl(url) {
let regEx = /^https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)$/gm;
return regEx.test(url);
}
Функция isValidWebUrl
использует регулярное выражение для проверки, является ли переданный URL корректным. Она допускает либо http
, либо https
, и требует, чтобы в URL содержался домен, который начинается с www.
(по желанию) и включает разрешенные символы. Если URL не соответствует этим критериям, функция возвращает false
. Вы можете использовать эту функцию для валидации входящих URL перед обработкой.
Вот еще один метод для проверки валидности URL:
// ***примечание***: если входное значение пустое (""), функция возвращает true
var elm;
function isValidURL(u){
// Предостережение/решение для проблемы, описанной в ***примечании***
if (u !== "") {
if (!elm) {
elm = document.createElement('input');
elm.setAttribute('type', 'url');
}
elm.value = u;
return elm.validity.valid;
} else {
return false;
}
}
console.log(isValidURL(''));
console.log(isValidURL('http://www.google.com/'));
console.log(isValidURL('//google.com'));
console.log(isValidURL('google.com'));
console.log(isValidURL('localhost:8000'));
В этом коде функция isValidURL
проверяет валидность URL с использованием элемента ввода типа 'url'. Если строка пустая, функция возвращает false. Обратите внимание, что создается элемент input
только один раз, что улучшает производительность при повторных вызовах функции. Для непустых строк, функция устанавливает значение элемента и возвращает результат проверки валидности.
Преобразование объекта JS в строку JSON
Получение значений из параметров "GET" (JavaScript)
Как преобразовать строку, разделённую запятыми, в массив?
Как заменить символ по заданному индексу в JavaScript?
Удалить первый символ строки, если он равен 0