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)
答案 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
}
}