jQuery验证不使用双引号

时间:2015-06-01 21:15:49

标签: jquery regex json jquery-validate

jQuery Validate插件似乎无法验证带双引号的网址,例如:

https://pubads.g.doubleclick.net/gampad/ads?sz=3x3&iu=/xxxxxxx/xxxx_xxxxx&ciu_szs&impl=s&gdfp_req=1&env=vp&output=xml_vast2&unviewed_position_start=1&url="+ document.referrer + "&description_url=xxx.xxx&correlator=" + Math.floor(Date.now() / 1000)

然而,它将验证第一个双引号。由于我循环遍历表单字段名称,如何在循环之前将正则表达式应用于字段以转义"。或者使用jQuery Validate插件有更好的方法吗?

原始网址:

https://pubads.g.doubleclick.net/gampad/ads?sz=3x3&iu=/xxxxxxx/xxxx_XXX_xxxxxx&ciu_szs&impl=s&gdfp_req=1&env=vp&output=xml_vast2&unviewed_position_start=1&url="+ document.referrer + "&description_url=xxxxxx.com&correlator=" + Math.floor(Date.now() / 1000)

JSFIDDLE

1 个答案:

答案 0 :(得分:0)

OP中的示例网址(带有空格和引号)无效,url规则正在对其进行正确评估。

  

或者jQuery Validate插件有更好的方法吗?

对于内置规则不适用于您的规范的任何情况,您可以编写自己的自定义规则。使用标准url规则作为基础构建您的新功能并使用the .addMethod() method进行声明。

根据您的规范,只需adjust this regex ...

jQuery.validator.addMethod("myURL", function( value, element ) {
    return this.optional(element) || /^(https?|s?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})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
}, 'Please enter a valid URL.');

用法:

rules: {
    // other rules,
    adTag: {
        myURL: true
    }
}