Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery验证不处理带双引号的URL_Jquery_Regex_Json_Jquery Validate - Fatal编程技术网

jQuery验证不处理带双引号的URL

jQuery验证不处理带双引号的URL,jquery,regex,json,jquery-validate,Jquery,Regex,Json,Jquery Validate,jQuery Validate插件似乎不使用双引号验证URL,例如: 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 + "&

jQuery Validate插件似乎不使用双引号验证URL,例如:

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验证插件

原始URL:

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)

OP中的示例URL(带空格和引号)无效,并且
URL
规则正在正确评估该URL

或者jQuery验证插件有更好的方法吗

对于内置规则不适用于您的规范的任何情况,您都可以编写自己的自定义规则。使用标准
url
规则作为基础,构造新函数并使用进行声明

只需按照您的规格

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
    }
}

您是否尝试将这些引用的URL编码为
%22
?问题是jquery验证插件首先命中字段。在命中验证插件之前,我如何在字段上运行
encodeURI
?请再次在OP中发布足够的代码来创建一个。不要完全依赖JSFIDLE。谢谢。显然,确实存在除此之外,还有引号。将它们全部删除,您的URL仍然无效。您不能有一个带空格的有效URL。@Sparky,当前应用中的所有内容都处于混乱状态。在那里更容易看到和运行。URL是有效的,我刚刚用“x”替换了实际的URL和帐户ID信息”“是的。输入表单中最后一个文本区域的URL被放入代码中的值中,该值嵌入到站点中。但是,您提供的正则表达式不起作用。