Проверка валидности URL в JavaScript с помощью RegExp

Вячеслав
Местный
Сообщения
229
Реакции
21
JavaScript:

function isValidUrl(url)
{
var objRE = /(^https?:\/\/)?[a-z0-9~_\-\.]+\.[a-z]{2,9}(\/|:|\?[!-~]*)?$/i;
return objRE.test(url);
}

Теперь по частям:

(^https?:\/\/)? - В начале строки (^) ищем http или https (вопросительный знак делает букву s опциональной), все это выражение опционально из-за наличия после скобок вопросительного знака.

[a-z0-9~_\-\.]+ - Дальше идут символы из разрешенного набора: латинские буквы, цифры, тильда, знак подчеркивания, дефис и точка (дефис и точка экранированы бэкслэшами, чтобы лишить их «особого» статуса). Плюс позволяет повторять эти знаки от одного раза до бесконечности.

[a-z]{2,9} - Ищем имя доменной зоны: от двух до девяти латинских букв.

(\/|:|\?[!-~]*)? - Еще одна опциональная часть. После доменной зоны ожидаем символы слэша, двоеточия или вопросительный знак. Затем позволяем любые символы от восклицательного знака (тридцать третий) до тильды (сто двадцать шестой), повторяющиеся от нуля до бесконечности раз (благодаря звездочке).
 
Последнее редактирование:
pligin
Участник
Сообщения
3.654
Реакции
1.336
Telegram
pligin
Вячеслав написал(а):
Зарегистрируй домены с
ps~web
ps_web
ps.web
ps--web
Это просто бесполезная тема, на которую ты потратил время даже не вникнув в суть того, что ты делаешь
Доменное имя должно содержать не менее 2 и не более 63 букв латинского алфавита, цифр, символов "дефис" (-) и не должно начинаться или заканчиваться символом "дефис" (-), а также содержать символ "дефис" (-) в третьей и четвертой позициях одновременно.
Твоя регулярка этого не может. Она пропустит любое говно, что ей отправят.
 
pligin
Участник
Сообщения
3.654
Реакции
1.336
Telegram
pligin
Вячеслав написал(а):
Возвращает true либо false при нахождении совладений, а не массив совладений. Где это указано?
Регулярка пропускает все, что указано неправильно и не пускает правильное.
1 совпадение - это true
IMG_20200211_013542.jpg
IMG_20200211_012847.jpg
IMG_20200211_013028.jpg
IMG_20200211_013434.jpg
IMG_20200211_013457.jpg
 
Вячеслав
Местный
Сообщения
229
Реакции
21
а можно твой вариант что пропустит любую ссылку?
 
Сверху