我正在使用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地址?
答案 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