Вячеслав
Местный
- Сообщения
- 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} - Ищем имя доменной зоны: от двух до девяти латинских букв.
(\/|:|\?[!-~]*)? - Еще одна опциональная часть. После доменной зоны ожидаем символы слэша, двоеточия или вопросительный знак. Затем позволяем любые символы от восклицательного знака (тридцать третий) до тильды (сто двадцать шестой), повторяющиеся от нуля до бесконечности раз (благодаря звездочке).
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
Зарегистрируй домены сВячеслав написал(а):[a-z0-9~_\-\.]+
ps~web
ps_web
ps.web
ps--web
Это просто бесполезная тема, на которую ты потратил время даже не вникнув в суть того, что ты делаешь
Твоя регулярка этого не может. Она пропустит любое говно, что ей отправят.Доменное имя должно содержать не менее 2 и не более 63 букв латинского алфавита, цифр, символов "дефис" (-) и не должно начинаться или заканчиваться символом "дефис" (-), а также содержать символ "дефис" (-) в третьей и четвертой позициях одновременно.
pligin
Участник
- Сообщения
- 3.654
- Реакции
- 1.336
Возвращает true либо false при нахождении совладений, а не массив совладений. Где это указано?Вячеслав написал(а):return objRE.test(url);
Регулярка пропускает все, что указано неправильно и не пускает правильное.
1 совпадение - это true
Вячеслав
Местный
- Сообщения
- 229
- Реакции
- 21