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

Вячеслав

Местный
Сообщения
213
Реакции
20
PSC
1.720,89
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.701
Реакции
1.333
PSC
57.345,57
Telegram
pligin
Зарегистрируй домены с
ps~web
ps_web
ps.web
ps--web
Это просто бесполезная тема, на которую ты потратил время даже не вникнув в суть того, что ты делаешь
Доменное имя должно содержать не менее 2 и не более 63 букв латинского алфавита, цифр, символов "дефис" (-) и не должно начинаться или заканчиваться символом "дефис" (-), а также содержать символ "дефис" (-) в третьей и четвертой позициях одновременно.
Твоя регулярка этого не может. Она пропустит любое говно, что ей отправят.
 

pligin

Команда форума
Администратор
Сообщения
3.701
Реакции
1.333
PSC
57.345,57
Telegram
pligin
Возвращает true либо false при нахождении совладений, а не массив совладений. Где это указано?
Регулярка пропускает все, что указано неправильно и не пускает правильное.
1 совпадение - это true
IMG_20200211_013542.jpgIMG_20200211_012847.jpgIMG_20200211_013028.jpgIMG_20200211_013434.jpgIMG_20200211_013457.jpg
 
Сверху