Регекс как чемпион.
Вы можете написать один самостоятельно, вот небольшой пример:
(https?://)?.+$
Немного погуглив, я нашел кое-что более конкретное в плане более строгой проверки:
^(https?://)?(([0-9a-z_!'().&=$%-]: )?[0-9a-z_!'().&=$%-]@)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z_!'()-]\.)([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.[a-z]{2,6})(:[0-9]{1,4})?((/?)|(/[0-9a-z_!*'().;?:@&=$,%#-])/?)$
Источник: http://www.geekzilla.co.uk/view2D3B0109-C1B2-4B4E-BFFD-E8088CBC85FD.htm
(Очевидно, протестируйте скопированное и вставленное регулярное выражение, как если бы вы использовали любой скопированный код)
Если вы не знаете, как использовать регулярные выражения в PHP, это просто:
$valid = preg_match($pattern, $urlOrStringToValidate);
где $ pattern = "/(https?://)?.+/" или что-то в этом роде, между / и /
Javascript имеет метод объекта с именем match для типа String.
var urlString = "http://www.XYZ.com";
var isValidURL = urlString.match(/(https?:\/\/)?.+/);