Регулярное выражение URI: заменить http: //, https: / /, ftp: // с пустой строкой, если URL действителен

У меня есть простой валидатор URL. Валидатор URL работает, вероятно, как и любой другой валидатор.

Теперь я хочу, если URL-адрес передан, взять https: //, http: // и удалить его для var b .

Я сделал еще одно регулярное выражение, которое захватывает https: //, http: //, ftp: // и т. Д. И сообщает, если URL-адрес прошел длинный тест, получить второй тест и заменить его на пустой строки.

Вот что я придумал:

$("button").on('click', function () {
   var url = $('#in').val();

   var match = /^([a-z][a-z0-9\*\-\.]*):\/\/(?:(?:(?:[\w\.\-\+!$&'\(\)*\+,;=]|%[0-9a-f]{2})+:)*(?:[\w\.\-\+%!$&'\(\)*\+,;=]|%[0-9a-f]{2})+@)?(?:(?:[a-z0-9\-\.]|%[0-9a-f]{2})+|(?:\[(?:[0-9a-f]{0,4}:)*(?:[0-9a-f]{0,4})\]))(?::[0-9]+)?(?:[\/|\?](?:[\w#!:\.\?\+=&@!$'~*,;\/\(\)\[\]\-]|%[0-9a-f]{2})*)?$/;
   var protomatch = /^(https?|ftp):\/\/(.*)/;


   if (match.test(url)) { // IF VALID
      console.log(url + ' is valid');

      // if valid replace http, https, ftp etc with empty
      var b = url.replace(protomatch.test(url), '');
      console.log(b)

   } else { // IF INVALID
      console.log('not valid')
   }

});

Почему это не работает?

9
задан jQuerybeast 10 January 2012 в 11:42
поделиться