美文网首页
前端URL检测小结

前端URL检测小结

作者: 寒天修竹 | 来源:发表于2018-08-21 15:13 被阅读0次

    近期多次遇到检测URL是否合法问题,每次都一通百度谷歌,重复劳动。所以,把相关问题总结如下。

    URL合法性

    来源于 维基百科

    包含的合法字符

    URL 的合法字符包括 0-9、A-Z、a-z 和特殊字符:$-_.,+!*’()#%

    JavaScript检测实现

    有bug,待完善

    对于支持URL()对象的浏览器

    function validateUrl(url) {
      var isUrl = false;
      try {
        var url = new URL(url);
        isUrl = true;
      } catch(e) {
        isUrl = false;
      }
      return isUrl;
    }
    

    对于不支持URL()对象的浏览器

    • 使用polyfill: polyfill.js - URL,然后调用以上方法
    • 使用正则匹配。没有找到完美匹配的正则表达式,简单的如下:
    function validateUrl(url) {
        return /^((https|http|ftp|rtsp|mms)?:\/\/)?[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=?%\-&_~`@[\]':+!]*([^<>"])*$/.test(url);
    }
    

    小结

    由于URL组成的复杂性,很难找到一个可以检测所有URL合法性的正则。所以,在使用URL的具体场景中,最好给定一个合法格式范围,范围外则判定为不合法。

    参考

    相关文章

      网友评论

          本文标题:前端URL检测小结

          本文链接:https://www.haomeiwen.com/subject/umxjiftx.html