Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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
Javascript 扩展jQuery验证方法以验证多个CSV IP地址_Javascript_Jquery_Regex_Jquery Validate - Fatal编程技术网

Javascript 扩展jQuery验证方法以验证多个CSV IP地址

Javascript 扩展jQuery验证方法以验证多个CSV IP地址,javascript,jquery,regex,jquery-validate,Javascript,Jquery,Regex,Jquery Validate,我正在使用插件进行客户端验证(是的,我将确保也进行服务器端验证) 我希望验证以逗号分隔的IP地址列表。验证IP有很多解决方案,插件中碰巧包括以下内容 jQuery.validator.addMethod("ipv4", function(value, element, param) { return this.optional(element) || /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[

我正在使用插件进行客户端验证(是的,我将确保也进行服务器端验证)

我希望验证以逗号分隔的IP地址列表。验证IP有很多解决方案,插件中碰巧包括以下内容

jQuery.validator.addMethod("ipv4", function(value, element, param) {
    return this.optional(element) || /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/i.test(value);
}, "Please enter a valid IP v4 address.");

但是,如前所述,我希望验证由逗号分隔的多个IP。如何扩展此方法以验证由逗号分隔的0个或多个IP地址?

应该这样做,除非您希望允许空列表:

/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?),)+$/i.test(value + ',')
jQuery.validator.addMethod('validIP',函数(值){
如果(!value.length)
返回真值
list_ip=value.split(',');
对于(j=0;j对于(var i=0;i可能经典的方法更好:获取字符串,用“,”分割,然后为每个ip迭代结果数组(不是最快的,但可能是最好的)谢谢地狱宝贝。是应该创建一个全新的方法,还是可以拆分字符串,然后调用原始方法?首先,您可以尝试@David Knipe的方法,如果不起作用,我建议您创建一个新方法,该方法将部分验证每个ip地址(因为在您的方法中,它将验证所有字符串内容,如果第4个字符串不正常,但其余的都正常,则将返回错误验证消息)谢谢David,空列表需要什么?您可以在末尾添加
。然后,因为
的优先级较低,您必须将其括在括号中,否则
^
$
将无法按预期运行。如下所示:
/^((25[0-5]| 2[0-4][0-9]|[01]?[0-9][0-9])\。(25[0-5]1240-4][0-9]|[01]?[0-9][0-9]?\(25[0-5][2[0-4][0-9][01]?[0-9][0-9]?)\(25[0-5][2[0-4][0-9][0-9][0-9][0-9][0-9],)$/i.test value+','
。或者,单独处理空列表案例:
jQuery.validator.addMethod('validIP', function(value) {

    if (!value.length)
        return true

    list_ip = value.split(',');

    for(j = 0; j< list_ip.length; j++){
        var split = list_ip[j].split('.');

        if (split.length != 4)
            return false;
        for (var i=0; i<split.length; i++) {
            var s = split[i];
            if (s.length==0 || isNaN(s) || s<0 || s>255)
                return false;
        }

        }, ' Invalid IP Address');
    return true
    }



    Usage:

    jQuery("#myForm").validate({
    rules: {
        name: {
            validIP: true
        }
    }
}