首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery IP地址验证失败

问jQuery IP地址验证失败
EN

Stack Overflow用户
提问于 2012-07-02 22:13:06
回答 2查看 4.8K关注 0票数 1

下面是代码片段,我在其中编写了屏蔽IP地址并使用jQuery进行验证的代码。但是,我收到有效IP地址(如222.222.222.222)的错误消息。有人能帮帮忙吗?

代码语言:javascript
复制
            //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;
                });
            });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-02 22:26:54

您的正则表达式缺少其|字符。

代码语言:javascript
复制
\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]?)

另请注意,您可以将其缩短为

代码语言:javascript
复制
\b(?:\d{1,3}\.){3}\d{1,3}\b

如果您不需要检查它是否为介于0-255之间的有效ip地址

此外,任何\都需要自身转义,因此它将\

reference

更新

OP显示小提琴,没有读到上面的行,掩模的两边都有空格。所以正则表达式从来都不是有效的,因为掩码添加了空格。

fixed Fiddle

票数 2
EN

Stack Overflow用户

发布于 2013-02-04 20:37:07

只需将您的函数替换为

代码语言:javascript
复制
//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);
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11295437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档