Просто чтобы добавить к вещам. Я знаю, что это не полностью и не дает прямого ответа на этот конкретный вопрос, но это лучшее место, которое я могу найти, чтобы добавить эту информацию. Некоторое время назад я написал плагин jQuery для сопоставления URL-адресов для аналогичной цели, однако при текущем состоянии (будет обновлять его с течением времени) он все равно будет считать адреса, подобные 'http://abc.php', действительными. Однако если при запуске URL-адреса нет http, https или ftp, он не вернет значение «valid». Хотя я должен пояснить, этот метод jQuery возвращает объект, а не только одну строку или логическое значение. Объект разбивает вещи на части, и среди них - логическое значение .valid. Посмотрите полную скрипку и проверьте ссылку внизу. Если вы просто хотите взять плагин и перейти, см. Ниже:
Плагин jQuery
(function($){$.matchUrl||$.extend({matchUrl:function(c){var b=void 0,d="url,,scheme,,authority,path,,query,,fragment".split(","),e=/^(([^\:\/\?\#]+)\:)?(\/\/([^\/\?\#]*))?([^\?\#]*)(\?([^\#]*))?(\#(.*))?/,a={url:void 0,scheme:void 0,authority:void 0,path:void 0,query:void 0,fragment:void 0,valid:!1};"string"===typeof c&&""!=c&&(b=c.match(e));if("object"===typeof b)for(x in b)d[x]&&""!=d[x]&&(a[d[x]]=b[x]);a.scheme&&a.authority&&(a.valid=!0);return a}});})(jQuery);
jsFiddle с примером:
http://jsfiddle.net/SpYk3/e4Ank/