Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Возвращаясь к регулярным выражениям

Ответить
Настройки темы
Возвращаясь к регулярным выражениям

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Привет всем!

Помогите разобраться с довольно популярным выражением для проверки URL:
-----------------
~^(??:https?|ftp|telnet)://(?:[a-z0-9_-]{1,32}(?::[a-z0-9_-]{1,32})?@)?)?
* *(?:
* * * *(?:[a-z0-9-]{1,128}\.)+
* * * *(?:com|net|org|mil|edu|arpa|gov|biz|info|aero|inc|name|[a-z]{2})|(?!0)
* * * *(??!0[^.]|255)[0-9]{1,3}\.){3}
* * * *(?!0|255)[0-9]{1,3}
* * )
* * (?:/[a-z0-9.,_@%&?+=\~/-]*)?
* * (?:#[^ '\"&<>]*)?
$~i
-----------------------
Я его немного отформатировал... *Здесь все понятно, пока я не добираюсь до опережающих негативных проверок. Никак не соображу, зачем они? Причем даже их начинку толком не разберу, что за '0' и '255' в url?
Назначение последних двух строк выражения понятны, но отсутствие таких символов как '![]{}|' в первой из них, тоже объяснить не могу?
Кто нибудь, может подсказать что нибудь по этим вопросам?


Отправлено: 12:35, 02-07-2004

 

Старожил


Сообщения: 236
Благодарности: 0

Профиль | Отправить PM | Цитировать


Cryon
в юрл от 0 до 255 потому что юрл может быть как ип адрес так и привязаное имя к этому ипу.

а проверка на спецсимволы потому как домен не может содержать такие имена, типа https://w[w]w.}{ruker.r() u это международный стандарт.

Отправлено: 12:52, 02-07-2004 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Хм, хорошо...

Действительно с IP я стормозил, но все равно не понимаю, как это должно работать... Вот здесь мы определили домен:
(?:[a-z0-9-]{1,128}\.)+
(?:com|net|org|mil|edu|arpa|gov|biz|info|aero|inc|name|[a-z]{2})
А здесь, при необходимости '|' подсавим IP вместо домена:
|(?!0)(??!0[^.]|255)[0-9]{1,3}\.){3}
(?!0|255)[0-9]{1,3}

Кстати, не совсем понятно как тут использована операция |, т.е. смысл ясен - выбрать домены ИЛИ ip, но она же работает между ближайшими группами, т.е. (...)(var1)|(var2)(...), а судя по коду, тот же домен состоит из нескольких групп. Тогда получается: что в выборе участвуют только (net)|(66.79.174.172). Как же так?

Интересно, почему для IP нельзя было записать так:
(?:[0-9]{1,3}\.){3}[0-9]{1,3}

И возвращаясь к строке после домена:
(?:/[a-z0-9.,_@%&?+=\~/-]*)?
она озватывает весь остаток до якоря, НО, шаблон не содержит
 '![]{}|' и пробел! Хотя те же мелкософтовские сервера всё это используют, т.е. существуют реальные примеры ссылок!

Пока!


Добавлено:

Извеняюсь по поводу "(var1)|(var2)", обнаружил, что ператор '|' работает в пределах всей группы...

Отправлено: 15:43, 02-07-2004 | #3


Старожил


Сообщения: 236
Благодарности: 0

Профиль | Отправить PM | Цитировать


у меня вопрос на каком языке представлен это "популярное выражение проверки url" ?

Код: Выделить весь код
НО, шаблон не содержит 
 '![]{}|' и пробел! Хотя те же мелкософтовские сервера всё это используют, т.е. существуют реальные примеры ссылок!
интерестно посмотреть на сервер подднрживающий подобные энчеры..

на сколько я знаю, данные перед отправкой кодируются в по 16ричной системе и затем передаются, пробел превратится в %20 и т.п. просто интересно посмотреть как может коректно обработаться в глобальной сети астро-нета ссылка вида:

думаю браузер будет демонстрировать свое чувство юмора - 404

[s]Исправлено: FADE, 17:15 2-07-2004[/s]

Отправлено: 17:09, 02-07-2004 | #4


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Угу кодируются, но фишка в том, что когда человек вводит ссылку (скажем при регистрации на форуме) он будет её вводить так:
"www.xtec.es/ ~imagrans/manga.jpg"
или так:
"http://www.realist.fatal.ru/3[1].jpg"

В последнем случае скобки не приводятся к виду %XX при отправке.

Отправлено: 17:34, 02-07-2004 | #5


Старожил


Сообщения: 236
Благодарности: 0

Профиль | Отправить PM | Цитировать


да, действительно "http://www.vv.fatal.ru/3[1].jpg"
не достаточно защищено криптографически, но коректно ли пройдет проверка если записать так:

(?:#[^ '\"&[]<>]*)?

или так

(?:#[^ '\"&][<>]*)?


по мне так мне кажется нужно проверять не только ASCII символы в обычной кодировке, но и в десятичной и других.

пример
Код: Выделить весь код
< &#60 &#x3C; &lt %3C
П. С.,
обратную ковычку кстати тоже нужно проверять я думаю.

-----
у меня вопрос на каком языке представлен это "популярное выражение проверки url" ?

Добавлено:

а вот вам пример анчера использующий в качестве криптографической разметки обратную ковычку через протокол about: например..

Код: Выделить весь код
about:<body%20onLoad=`alert('ok')`>
Добавлено:

или классический пример для этого форума

Код: Выделить весь код
http://forum.oszone.net/topic.cgi?forum=<body%20onLoad=`alert('ok')`>
если б переменную forum не обозначили как только [1-n], где n=количеству форумов, то думаю пример работал так же как и в том примере что выше..


[s]Исправлено: FADE, 20:06 2-07-2004[/s]

Отправлено: 19:37, 02-07-2004 | #6


Старожил


Сообщения: 236
Благодарности: 0

Профиль | Отправить PM | Цитировать


а еще хорошо бы проверить верхний и нижний регистр...

например иногда <img> не работает, а <ImG> пройдет..

Отправлено: 18:13, 03-07-2004 | #7



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Возвращаясь к регулярным выражениям

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Обсуждение FAQ'а (Ча.Во) по регулярным выражениям Creat0R AutoIt 4 18-09-2009 10:01
Возвращаясь к мостам kapitanvagin Материнские платы и память 19 08-10-2008 22:03
PHP: помогите с регулярным выражением ams Вебмастеру 3 01-08-2005 15:00
Вернемся к регулярным выражениям FADE Вебмастеру 2 04-07-2004 19:18
Вопрос по регулярным выражениям vadimiron Вебмастеру 5 13-03-2004 20:12




 
Переход