jQuery IP地址验证失败
下面是我编写的代码片段,用于屏蔽IP地址并使用jQuery对其进行验证。但是,我收到了有效IP地址的错误消息(如222.222.222.222)。有人能帮忙吗jQuery IP地址验证失败,jquery,regex,Jquery,Regex,下面是我编写的代码片段,用于屏蔽IP地址并使用jQuery对其进行验证。但是,我收到了有效IP地址的错误消息(如222.222.222.222)。有人能帮忙吗 //Validate the form $('#form').validate({ rules: { ip: { required: true,
//Validate the form
$('#form').validate({
rules: {
ip: {
required: true,
IP4Checker: true
},
subnet: {
required: true,
IP4Checker: true
},
gateway: {
required: true,
IP4Checker: true
},
dns1: {
required: true,
IP4Checker: true
},
dns2: {
required: true,
IP4Checker: true
}
},
messages: {
ip: "Please enter a valid IP Address",
subnet: "Please enter a valid Subnet Mask Address",
gateway: "Please enter a valid Gateway Address",
dns1: "Please enter a valid DNS1 Address",
dns2: "Please enter a valid DNS2 Address"
}
});
//Validate the IP addresses
$(function() {
$.validator.addMethod('IP4Checker', function(value) {
var ip = "^(?:(?:25[0-5]2[0-4][0-9][01]?[0-9][0-9]?)\\.){3}" +
"(?:25[0-5]2[0-4][0-9][01]?[0-9][0-9]?)$";
return value.match(ip);
});
});
//Set mask for IP address fields
$(".ip").mask("999 . 999 . 999 . 999");
//Store numbers in hidden field
$(".ip").blur(function () {
//Create char array from phone number field
var charArray = $(this).val().split("");
var num = "";
//taking the input
$.each(charArray, function(index, value) {
num = num + value;
});
});
您的正则表达式缺少其|字符,即
\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
还请注意,您可以将其缩短为
\b(?:\d{1,3}\.){3}\d{1,3}\b
如果不需要检查它是否是0-255之间的有效ip地址
此外,任何\都需要自身转义,以便\
更新
OP显示小提琴和并没有读到线的上方,面具两边都有空格。因此,当掩码添加空格时,正则表达式永远无效
只需将函数替换为
//IP V4
jQuery.validator.addMethod("IP4Checker", function(value, element, param) {
return this.optional(element) || /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i.test(value);
//IP V6
jQuery.validator.addMethod("IP6Checker", function(value, element, param) {
return this.optional(element) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(value);
});
我试过了,但没用,对不起。我也尝试了一些其他的正则表达式,但它也不起作用。请看这把小提琴:哇,真奇怪。我已经想到了这一点,并删除了这些空间太。但我想当时我没有用这个正则表达式。非常感谢!:)94.156.240.100由于您的正则表达式要求每一个都有3位数字,123.123.123.400即使不应该也能在小提琴中工作(但正如我所说,较短的正则表达式不会检查0-255 123.123.400的修复程序是什么?我使用的是您为123.123.123.400提供的较长版本的正则表达式。谢谢。