Регулярное выражение для URL - PullRequest
2 голосов
/ 20 января 2010

Регулярное выражение, размещенное ниже, используется для получения URL-адресов, в том числе в формате, таком как example.com. Тем не менее, я хочу, чтобы он выбирал только те URL-адреса, которые имеют www. или http, https и т. Д. Другими словами, он должен подобрать www.example.com. Не должен забрать example.com.

((((ht|f)tp(s?))\://)?((www.|[a-zA-Z])([a-zA-Z0-9\-]+\.)([a-zA-Z]{2,8}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+))*)

Ответы [ 4 ]

1 голос
/ 20 января 2010

Убедитесь, что URI правильно сформирован с помощью регулярного выражения - используйте тот из RFC 3986. Убедитесь, что он правдоподобен с помощью кода. Попытка объединить проверку на правильность и правдоподобность в одном регулярном выражении слишком сложна для правильного понимания. См .: Требуется регулярное выражение для проверки URL ...

1 голос
/ 20 января 2010

Хммм, попробуй

(((((ht|f)tp(s?))\://)|(www\.))((|[a-zA-Z])([a-zA-Z0-9-]+.)([a-zA-Z]{2,8}))(\:[0-9]+)*(/($|[a-zA-Z0-9.\,\;\?\'\+&%\$#\=~_-]+))*)

EDIT: Да, я действительно не проверял это. Хорошо, я тоже не проверял, но я ДЕЙСТВИТЕЛЬНО внимательно посмотрел на него;)

(((((ht|f)tp(s?))\://)|(www\.))(([a-zA-Z0-9-]+.)?([a-zA-Z0-9]+\.)([a-zA-Z]{2,8}))(\:[0-9]+)*(/($|[a-zA-Z0-9.\,\;\?\'\+&%\$#\=~_-]+))*)

Вы должны посмотреть на хорошего тестера регулярных выражений. Я обычно использую Expresso, но есть много других.

0 голосов
/ 21 января 2010

Вот, пожалуйста:

\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.])(?:[^\s()<>]+|\([^\s()<>]+\))+(?:\([^\s()<>]+\)|[^`!()\[\]{};:'".,<>?«»“”‘’\s]))

Это пересмотренное регулярное выражение для либерального URL от Daring Fireball.

0 голосов
/ 20 января 2010

Я изменил ваше выражение:

((((ht|f)tp(s?))\://)?((www\.)([a-zA-Z0-9-]+\.)([a-zA-Z]{2,8}))(\:[0-9]+)*(/($|[a-zA-Z0-9.\,\;\?\'\+&%\$#\=~_-]+))*)

Очень хороший сайт, чтобы проверить ваши выражения здесь: http://gskinner.com/RegExr/

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