Мне нужна помощь в создании регулярного выражения, которое может правильно сопоставлять URL-адрес внутри свободного текста.
- scheme
- One of the following: ftp, http, https (is ftps a protocol?)
- необязательный пользователь (и необязательный пароль)
- host (with support for IDNs)
- support for www and sub-domain(s) (with support for IDNs)
- базовая фильтрация TLD (я думаю,
[a-zA-Z]{2,6}
достаточно)
- необязательный номер порта
- путь (необязательно, с поддержкой символов Unicode)
- запрос (необязательно, с поддержкой символов Unicode)
- фрагмент (необязательно, с поддержкой символов Unicode)
Вот что я смог узнать о поддоменах:
«Поддомен» выражает относительную, а не абсолютную зависимость: например, wikipedia.org включает поддомен домена org, а en.wikipedia.org включает поддомен домена wikipedia.org. Теоретически это подразделение может иметь глубину до 127 уровней, а каждая метка DNS может содержать до 63 символов, если общая длина доменного имени не превышает 255 символов.
Что касается самого доменного имени, я не смог найти надежного источника, но я думаю, что регулярное выражение для не-IDN (я не знаю, как написать версию, совместимую с IDN) выглядит примерно так:
[0-9a-zA-Z][0-9a-zA-Z\-]{2,62}
Может ли кто-нибудь помочь мне с этим регулярным выражением или указать правильное направление?
\p{L}
, но я не уверен. - person Alix Axel   schedule 29.12.2009