`
IT-future
  • 浏览: 30556 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于网络上IP地址校验正则表达式的一点缺陷

阅读更多

 网络上常见的代码如下:


static boolean isIpAddress(String s){
        String regex = "(((2[0-4]\\d)|(25[0-5]))|(1\\d{2})|([1-9]\\d)|(\\d)).(((2[0-4]\\d)|(25[0-5]))|(1\\d{2})|([1-9]\\d)|(\\d))
.(((2[0-4]\\d)|(25[0-5]))|(1\\d{2})|([1-9]\\d)|(\\d)).(((2[0-4]\\d)|(25[0-5]))|(1\\d{2})|([1-9]\\d)|(\\d))";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(s);
        return m.matches();
    }


经过测试,发现像“1.1.112”这样不合法的IP也可以通过校验
对0~255的校验“((2[0-4]\\d)|(25[0-5]))|(1\\d{2})|([1-9]\\d)|(\\d)”,这段代码应该没问题了,问题就出在对“.”的处理上,于是,改成如下:


static boolean isIpAddress(String s){
        String regex = "(((2[0-4]\\d)|(25[0-5]))|(1\\d{2})|([1-9]\\d)|(\\d))[.](((2[0-4]\\d)|(25[0-5]))|(1\\d{2})|([1-9]\\d)|(\\d))
[.](((2[0-4]\\d)|(25[0-5]))|(1\\d{2})|([1-9]\\d)|(\\d))[.](((2[0-4]\\d)|(25[0-5]))|(1\\d{2})|([1-9]\\d)|(\\d))";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(s);
        return m.matches();
    }


成功!!!  



分享到:
评论

相关推荐

    IP地址的正则表达式

    在探讨“IP地址的正则表达式”这一主题时,我们首先需要理解IP地址的基本构成以及正则表达式的原理。IP地址(Internet Protocol Address)是互联网协议为网络上的每个节点分配的一个唯一标识符,用于在网络中定位和...

    android验证ip地址的正则表达式

    通过正则表达式来实现IP地址的有效性检查是一种简单而有效的方法。 ### IP地址基础知识 在讨论正则表达式之前,先了解一下IP地址的基本结构。IPv4地址是最常用的版本,它由四组数字组成,每组数字之间用点分隔...

    java正则表达式验证IP地址

    Java正则表达式验证IP地址 Java正则表达式验证IP地址是指使用Java语言中的正则表达式来验证IP地址是否符合标准。IP地址是指在网络通信中用来标识设备的地址,它是一种逻辑地址,通过它可以找到网络中的设备。在...

    C#使用正则表达式验证IP地址

    使用正则表达式来判断用户输入的IP地址格式是否正确

    IP地址检查正则表达式

    基于以上规则,我们可以构建一个用于检查IP地址有效性的正则表达式:“`\\d{1,3}\\.(\\d{1,3}\\.)\\d{1,3}`”,但是这个表达式还存在缺陷,因为没有考虑到每个数字段的值不能超过255这一限制。因此,更精确的正则...

    IP验证正则表达式

    IP(Internet Protocol)地址是互联网上每个设备的唯一标识符,它允许数据在网络中被正确地路由和传输。IPv4是最常见的IP版本,采用点分十进制表示法,由四组十进制数字组成,每组数字范围为0到255,组间用点号分隔...

    android IP和端口的验证方法 正则表达式

    综上所述,Android中使用正则表达式验证IP地址和端口号是确保网络通信数据格式正确的重要手段。理解并掌握正则表达式的使用,能够帮助开发者编写出更加稳定和安全的Android应用程序。在进行IP和端口验证时,开发者...

    IP 正则表达式验证

    最后写了一个IP地址的正则表达式验证程序。 代码如下:((25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(25[0-5]|2[0-4]\d|1?\d?\d) 截图如下: 您可能感兴趣的文章:javascript 手机号码正则表达式验证函数JS正则表达式验证数字...

    正则表达式 Java 判断字串是否合理

    根据给定的文件信息,我们可以总结出以下关于Java正则表达式的重要知识点: ### 1. 正则表达式简介 正则表达式是一种强大的文本处理工具,它能够帮助我们匹配、查找、替换等操作符合某种规则的字符串。在Java中,...

    正则表达式大全 - 收集的最常用正则表达式

    12. 匹配IP地址:`d+.d+.d+.d+` - 这个正则表达式可以识别标准IPv4地址,如192.168.0.1。 此外,还有一些用于匹配特定类型的数字的正则表达式,如正整数、负整数、整数、浮点数等。这些在处理数值数据时非常有用。 ...

    正则表达式大全.docx

    4. 电子邮箱地址:`/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/` - 这个正则表达式用于验证电子邮件地址的格式,包括用户名、@符号、域名和顶级域名。 5. URL:`/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2...

    IP手机号码正则表达式

    总之,掌握IP地址和手机号码的正则表达式对于任何涉及网络通信或用户数据验证的IT专业人员来说都是至关重要的。通过熟练运用正则表达式,我们可以确保数据的有效性和安全性,提高软件的稳定性和用户体验。

    常用正则表达式大全.txt

    根据提供的文件信息,我们可以整理出一系列与正则表达式相关的知识点。这些知识点涵盖了从基本的数字验证到复杂的字符串匹配等多个方面。下面是详细的知识点总结: ### 基本概念 正则表达式是一种用于文本模式匹配...

    java中用正则表达式检测IP地址是否合理

    ### Java中利用正则表达式检测IP地址合理性 在日常的软件开发中,经常会遇到需要验证用户输入数据的情况,特别是对于IP地址这类特定格式的数据。本文将详细介绍如何使用Java中的正则表达式来检查一个IP地址的有效性...

    Java正则表达式 Java 正则表达式

    - 例如,可以使用正则表达式检查输入的IP地址是否符合规范,从网页文本中提取电子邮件地址或者超链接。 2. **核心类** - `java.lang.String`:提供了`matches()`方法,可以直接对字符串进行正则匹配。 - `java....

    C++正则表达式-regex类(不依赖其他库)

    C++正则表达式是C++11标准引入的一个强大工具,它允许程序员使用正则表达式进行文本模式匹配和搜索。在这个特定的案例中,我们关注的是`regex`类,它是C++ `<regex>`库的一部分,用于实现正则表达式操作。这个压缩包...

    报表工具FineReport正则表达式定义规则

    ### 报表工具FineReport正则表达式定义规则 #### 一、正则表达式概述 正则表达式是一种强大的文本处理工具,在多种编程语言中都有应用,它可以帮助我们完成字符串搜索、替换等一系列复杂的文本处理任务。在报表...

    常用的表单校验正则表达式

    ### 常用的表单校验正则表达式知识点详解 #### 1. IP地址验证 在Web开发中,经常需要对用户输入的IP地址进行有效性验证。一个标准的IPv4地址由四个介于0到255之间的数字组成,并且这四个数字之间用点分隔。 **代码...

    正则表达式验证表单

    IP地址是一种用于标识互联网上主机的标准格式。IPv4地址通常由四个0到255之间的数字组成,并用点号分隔。以下是一个简单的IP地址验证函数: ```javascript function isIP(strIP) { if (isNull(strIP)) return ...

Global site tag (gtag.js) - Google Analytics