Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

URI Regex: Replace http://, https://, ftp:// with empty string if URL valid

I have a simple URL validator. The url validator works as probably every other validator.

Now I want, if the URL passed, take the https://, http:// and remove it for var b.

So what I've done is I made a another Regex which captures https://, http://, ftp:// etc and say if the url passed the long test, get the second test and replace it with empty string.

Here is what I came up with:

$("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')
   }

});

Why this doesn't work?

like image 860
jQuerybeast Avatar asked Jan 10 '12 11:01

jQuerybeast


1 Answers

var b = url.substr(url.indexOf('://')+3);
like image 77
YuS Avatar answered Oct 18 '22 05:10

YuS