Это небольшое улучшение / корректировка (в зависимости от того, что вам нужно) Ответ Раджива:
([\w\-_]+(?:(?:\.|\s*\[dot\]\s*[A-Z\-_]+)+))([A-Z\-\.,@?^=%&:/~\+#]*[A-Z\-\@?^=%&/~\+#]){2,6}?
См. здесь для примера того, что он делает и не соответствует.
Я избавился от проверки на "http" и т. Д., Так как я хотел поймать URL без этого. Я добавил немного в регулярное выражение, чтобы поймать некоторые запутанные URL (то есть, где пользователь использует [точка] вместо "."). Наконец, я заменил «\ w» на «A-Z» на и «{2,3}», чтобы уменьшить количество ложных срабатываний, таких как v2.0 и «moo.0dd».
Любые улучшения в этом приветствии.