Javascript url字段的验证

Javascript url字段的验证,javascript,html,url,Javascript,Html,Url,我在我的Web应用程序中输入了文本,用于输入不同用户的网站url。我应该对该字段进行哪些验证。 我想知道以下信息:- 1.我应该允许用户输入哪些字符。 2.我应该限制哪个角色 我们正在数据库中保存此url。 请注意,此数据将被其他一些应用程序用作url,它不使用url编码,并且我无权访问该应用程序的代码。我唯一能做的就是不允许用户有这样的性格 我正在使用jquery和javascript进行客户端验证说明: 协议(可选)和域的匹配 匹配协议,允许格式为http://或mailto: 允许电子邮件

我在我的Web应用程序中输入了文本,用于输入不同用户的网站url。我应该对该字段进行哪些验证。 我想知道以下信息:- 1.我应该允许用户输入哪些字符。 2.我应该限制哪个角色

我们正在数据库中保存此url。 请注意,此数据将被其他一些应用程序用作url,它不使用url编码,并且我无权访问该应用程序的代码。我唯一能做的就是不允许用户有这样的性格

我正在使用jquery和javascript进行客户端验证

说明:

  • 协议(可选)和域的匹配
  • 匹配协议,允许格式为http://或mailto:
  • 允许电子邮件地址使用@
  • 任何看起来像域的东西,非unicode域
  • 从某物@或www开始
  • 任何看起来像域名的东西
  • 匹配路径、查询字符串和锚点
  • 允许可选路径/路径
  • 允许以开头的可选查询字符串
  • 允许可选锚定#锚定
  • 使URL后缀可选
  • 您可以通过以下代码使用正则表达式:

    var message;
    var myRegExp =/^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/i;
    
    var urlToValidate = "http://www.google.com";
        if (!myRegExp.test(urlToValidate)){
        message = "Not a valid URL.";
        }else{
        message =  "Its a valid URL."
        }
        alert(message);
    
    资料来源:

    编辑

    JQuery验证所做的工作超出了要求。如果URL验证是唯一需要的,那么这就是JQuery验证URL所使用的正则表达式:

    /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/
    

    您可以将字符串与正则表达式进行匹配,以检查是否有效:

    以下是验证有效URL的模式:

    /^(https?|ftp:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
    
    如何使用它

    var url = 'http://google.com',
    urlRegex = /^(https?|ftp:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;
    
    console.log(urlRegex.test(url));
    
    检查这个-

    不需要自己编写和验证正则表达式

     $("#yourForm").validate({
        rules: {
          field: {
            required: true,
            url: true
          }
        }
     });
    

    请看一下这个jquery插件
    http://jqueryvalidation.org/
    试试这个,你能告诉我为什么这个问题被否决吗?请在否决我的问题时添加评论,这样我可以改进它。对于使用“ftp”等其他协议的URL,这将失败。