Regex для проверки тела текста для URL? - PullRequest
0 голосов
/ 07 декабря 2011

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

stackoverflow.com

И этому предложению

I'm a sentence.Next Sentence.

Очевидно, что это имеет смысл, потому что мой шаблон не строго проверяет .com, .co.uk, .com.au и т. д.

Я хочу, чтобы оно совпадало с stackoverflow.com, а не с последним.

Поскольку я не эксперт по Regex, кто-нибудь знает о каких-либо хороших шаблонах Regex для проверки всех типов URL в основном тексте, при этом не совпадая с предложениями, как указано выше?

Если яЯ должен тщательно проверить расширение домена, я полагаю, мне придется уладить.

Вот мой шаблон, но я не думаю, что это поможет.

(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?

1 Ответ

1 голос
/ 07 декабря 2011

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

Этотребует, чтобы вы сделали предположение, что обычно ссылки не будут смешивать регистр в расширении домена, например, вы можете увидеть .COM или .com, но, вероятно, не .Com, если вы сопоставляете только расширения домена, которые не смешивают регистр, то вам следует избегатьсоответствует большинству предложений.

В середине вашего регулярного выражения у вас есть [\w]{2,4}, попробуйте изменить его на ([A-Z]{2,4}|[a-z]{2,4}) (или (?:[A-Z]{2,4}|[a-z]{2,4}), если вы не хотите новую захваченную группу).

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