Во-первых, @zespri верен в своем комментарии - гораздо лучший дизайн для хранения фактического типа.Даже если вы используете регулярные выражения, которые я предлагаю ниже, в будущем все еще может произойти сбой.
Но да, в этом случае можно использовать регулярное выражение:
Следующее регулярное выражение является типичным электронным письмомдетектор.Гораздо безопаснее использовать, чем просто знак «@»:
([a-zA-Z]+[a-zA-Z0-9._+\-]{3,}(?:@|%40)[a-zA-Z0-9]+[a-zA-Z0-9\.\-]?(?:\.[a-zA-Z]+)+)
Следующие три найдут профили и страницы Facebook.Вы можете избавиться от суффикса, чтобы остаться только с доменом (ами) Facebook, или провести дальнейшее исследование и редактирование, чтобы ограничиться другими видами ресурсов Facebook:
facebook\.(?:com?\.|net\.)?[a-z]{2,3}/.+\?id=(\d+)
facebook\.(?:com?\.|net\.)?[a-z]{2,3}/p\.php.+i=(\d+)
facebook\.(?:com?\.|net\.)?[a-z]{2,3}/(\w[\w\.\-]+\w)(?:$|[/\?#])
Избегайте префикса 'http://www.'- вы никогда не знаете, какой поддомен может быть использован, плюс они часто опускаются.Также обратите внимание, что в Facebook больше tld, чем просто .com
Для «других» URL вы можете просто найти привязку
^https?://
Из вашего вопроса неясно, вводят ли пользователи их в вашу систему, илисделано ли это неконтролируемым образом.Обратите внимание, что люди часто пропускают префикс http, поэтому это не совсем надежный способ определения URL-адресов.
Если вы ищете URL-адреса в качестве ссылок на HTML-страницах, их можно надежнее обнаружить с помощью поиска якорей:
<a\s+(?:.*?)href=['"]?(https?://[^'^"^\s]+)(?:.*?)>