url字段的验证

时间:2014-12-01 04:32:12

标签: javascript html url

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

我们只是将此网址保存在数据库中。 请注意,这些数据将被其他一些应用程序用作url,它不使用url编码,而且我无法访问该应用程序的代码。唯一可以做的就是不允许用户这样的角色。

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

3 个答案:

答案 0 :(得分:1)

说明:

  1. 匹配协议(可选)和域
  2. 匹配协议,格式为http://或mailto:
  3. 允许@ @用于电子邮件地址
  4. 任何看起来像域,非unicode域
  5. 的东西
  6. 从@或www。
  7. 开始
  8. 任何像域名一样的东西
  9. 匹配路径,查询字符串和锚点
  10. 允许可选/路径
  11. 允许以?开头的可选查询字符串
  12. 允许可选锚#anchor
  13. 使URL后缀可选
  14. 您可以使用以下代码中的正则表达式:

    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);
    

    来源:http://blog.roymj.co.in/url-validation-using-regular-expression-javascript/

    修改

    JQuery Validation的功能超出了要求。如果URL验证是唯一需要的,那么这是JQuery Validation for 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})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/
    

答案 1 :(得分:1)

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

以下是验证有效网址的模式:

/^(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));

答案 2 :(得分:1)

检查一下 - http://docs.jquery.com/Plugins/Validation/Methods/url

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

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