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

时间:2013-12-29 15:33:46

标签: javascript jquery regex jquery-validate

我正在使用http://jqueryvalidation.org/插件进行客户端验证(是的,我将确保服务器端验证)。

我希望验证以逗号分隔的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地址?

2 个答案:

答案 0 :(得分:3)

这应该这样做,除非你想允许一个空列表:

/^((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 + ',')

答案 1 :(得分:0)

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

如果只有一个字符串不是正确的ip,则返回false。
对于null string

返回true