Для того, чтобы проверить, является ли строка правильным URL-адресом, лучше использовать функцию filter_var():
var_dump(filter_var(''example.com'', FILTER_VALIDATE_URL));
Использование регулярных выражений там, где в них нет надобности — плохая практика. Однако, если по каким-то причинам Вам хочется это сделать, тогда можете воспользоваться регулярным выражением, которое используется в примере ниже:
$text = preg_replace(" #((http|https|ftp)://(\S*?\.\S*?))(\s|\;|\)|\]|\[|\{|\}|,|\"|''|:|\<|$|\.\s)#ie", "''<a href=\"$1\" target=\"_blank\">$3</a>$4''", $text );
Этот код ищет URL-адреса в строке и заменяет их на HTML-эквивалент ссылки.