URL, содержащий все допустимые символы для проверки моего шаблона регулярных выражений? - PullRequest
0 голосов
/ 21 сентября 2010

Прежде всего я создал собственное регулярное выражение, чтобы найти все URL-адреса в тексте, потому что:

  1. Когда я искал SO, и Google нашел регулярное выражение только для определенных конструкций URL, таких как изображения и т. Д.
  2. Я нашел довольно полное регулярное выражение в самом руководстве по PHP (см. Сообщение "splattermania at freenet dot de 01-Oct-2009 12:01" на http://php.net/manual/en/function.preg-match.php), в котором можно найти практически все, что напоминает URL, всего лишь "bit.ly".
  3. В этом шаблоне есть несколько ошибок и ограничений, поэтому я исправляю и улучшаю его.

Теперь структура шаблона выглядит правильно,но я не уверен, что присутствуют все допустимые символы. Пожалуйста, опубликуйте образцы URL, чтобы проверить мой шаблон. Может быть, лень, но я не хочу читать страницы и страницы ссылок, чтобы найти их все, нужно сосредоточиться наЕсли у вас есть сводка действительных символов для имени пользователя, пароля, пути, запроса и якоря, которыми вы можете поделиться, это было бы очень полезно.

С наилучшими пожеланиями!

1 Ответ

1 голос
/ 21 сентября 2010

Шаблон, на который вы ссылаетесь, действительно соответствует множеству URL, как действительных, так и недействительных.Это не удивительно, так как почти все в этом регулярном выражении не является обязательным;как вы писали сами, он даже соответствует bit.ly, поэтому легко увидеть, как он будет соответствовать множеству не относящихся к URL материалов.

Например, новые доменные имена Unicode не учитываются (например,, http://www.müller.de).

Он не соответствует действительным URL-адресам, таким как

http://msdn.microsoft.com/en-us/library/aa752574(VS.85).aspx

Он не соответствует относительным путям (хотя и не обязательно), таким как /cgi-bin/version.pl.

Не соответствует mailto: ссылкам.

Не соответствует URL-адресам, таким как http://1.2.3.4.Даже не спрашивайте об IPv6:)

В общем, регулярные выражения НЕ являются подходящим инструментом для надежного сопоставления или проверки URL-адресов.Это работа для парсера.Если вы можете жить со многими ложно-положительными и ложно-отрицательными совпадениями, то регулярные выражения хороши.

Пожалуйста, прочитайте превосходное эссе Яна Гойваэрта на эту тему: Обнаружение URL-адресов в блоке текста .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...