Best “bang for the buck”:
@^(https?|ftp)://[^\s/$.?#].[^\s]*$@iS

Best exhaustive solution:
https://gist.github.com/dperini/729294

really impressed with @stephenhay 's REGEX solution (38 characters) to match damn well near all URL possibilities https://t.co/8wuyg4qYVD

— Patrick Coombe ♒ (@patrickcoombe) August 7, 2015

Source: In search of the perfect URL validation regex

TODO: Consider moving to snippets?