javascript - URI 正则表达式 : Replace http://, https ://, ftp://如果 URL 有效则为空字符串

标签 javascript jquery regex uri validation

我有一个简单的 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')
   }

});

为什么这不起作用?

最佳答案

var b = url.substr(url.indexOf('://')+3);

关于javascript - URI 正则表达式 : Replace http://, https ://, ftp://如果 URL 有效则为空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8802715/

相关文章:

javascript - 在 RegExp 搜索中有效地找到匹配的组

c# - 正则表达式 .NET 问题

Javascript:用变量引用数组,而不是复制它

jquery - 路径中存在非法字符?

JQuery DataTableset.net 第一个和最后一个事件?

javascript - 如何在用户交互时停止 scrollLeft 动画

javascript - rails 上的 ruby : javascript in asset pipeline

javascript - 在 Angular 服务中包含 Jquery

javascript - array.splice 出现意外结果

javascript - 用分数正则表达式替换分数,用数字正则表达式替换数字