背景:

在开发的过程中我们很容易遇到对输入参数进行校验的情况,其中就包括对ip地址进行校验。

规则:

Ipv4地址分为ABCDE五大类,其中ABC类是普通ip地址,D类是组播地址,E类保留,作为研究之用。

范围分别为:
A: 1.0.0.1 一127.255.255.255
内网地址范围:10.0.0.0 一一10-255.255.255
B: 128.0.0.1 —191.255.255.255
内网地址范围:172.16.0.0——172.31.255.255
C: 192.0.0.1 —223.255.255.255
内网地址范围:192.168.0.0—一192.168.255.255
D: 224.0.0.1 —239.255.255.255
E: 240.0.0.1 —255.255.255.255

我们的正则要求ip必须是ABC类地址。

代码:


import java.text.Normalizer;
import java.text.Normalizer.Form;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class IPV4Test {public static void main(String[] args) {String ip1 = "127.0.0.1";String ip2 = "255.255.36.6";System.out.println("check > " + ip1 + " > " + isValidIpv4Addr(ip1));System.out.println("check > " + ip2 + " > " + isValidIpv4Addr(ip2));}public static boolean isValidIpv4Addr(String ipAddr) {String regex = "(^((22[0-3]|2[0-1][0-9]|[0-1][0-9][0-9]|([0-9]){1,2})"+ "([.](25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]|([0-9]){1,2})){3})$)";if (ipAddr == null) {System.out.println("ip addresss is null ");return false;}ipAddr = Normalizer.normalize(ipAddr, Form.NFKC);Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(ipAddr);boolean match = matcher.matches();if (!match) {// System.out.println("invalid ip addresss = " + ipAddr);}return match;}}

测试结果:

check > 127.0.0.1 > true
check > 255.255.36.6 > false

ipv4校验(java)相关推荐

  1. spring入参为指定值,校验java入参的值为规定的值,利用Validator指定值校验注解——一看就会

    我们在使用spring项目的时候,经常使用@Valid来对入参进行校验,比如必须为空,必须不为空,长度多少,是否符合邮件格式等等,同时也可以正则. 如下图所示, @Null(message = &qu ...

  2. 身份证号码校验java

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...

  3. java 护照校验,Java应用中的数据校验

    翻译:叩丁狼教育吴嘉俊 [译者注:这篇文章是开源项目CUBA Platform的作者,在这篇文章中,作者阐述了CUBA平台中关于数据校验的设计思想和使用方式,可以作为大家在设计数据校验方面一个比较好的 ...

  4. java url正则校验,Java正则验证

    import java.util.regex.*; public final class RegExpValidator { /** * 验证邮箱 * @param 待验证的字符串 * @return ...

  5. java验证域名_域名规则校验Java版本

    package util; import java.io.UnsupportedEncodingException; import java.util.regex.Matcher; import ja ...

  6. java xsd校验,java中使用xsd验证xml | 学步园

    1. 首先要导入包,axiom包请到apache上下载 2. xsd和xml 文件放在工程 bin路径下即可. package xmlValidate; import java.io.ByteArra ...

  7. 16进制 BCC校验(异或校验) Java代码

    BCC校验小知识 BCC(Block Check Character/信息组校验码),因校验码是将所有数据异或得出,故俗称异或校验.具体算法是:将每一个字节的数据(一般是两个16进制的字符)进行异或后 ...

  8. CRC校验 java modbus

    /*** crc16 X16+x15+x2+1* 16进制报文是 02 03 00 00 00 40 CRC16* 传输的str:"020300000040"* 结果:4409* ...

  9. 全国组织机构统一社会信用代码校验 - Java 版

    主要是网上错误的代码太多,为了避免大家踩坑,特此更正,详细规则如下: GB 32100-2015 法人和其他组织统一社会信用代码编码规则 private static final String BAS ...

最新文章

  1. 日志库EasyLogging++学习系列(6)—— 日志记录器
  2. mac 下配置连接Linux服务器方法,上传下载文件操作
  3. 八种基本排序方式(插入排序,希尔排序,选择排序,冒泡排序,快速排序,堆排序,归并排序,基数排序)代码模板以及时间复杂度
  4. 前端学习(3173):react-hello-react之todoList教程
  5. ApacheCN JavaWeb 译文集 20211017 更新
  6. 前端—每天5道面试题(7)
  7. 41.字符串函数(三)
  8. SQL中JOIN和UNION区别及用法
  9. 兆骑科创平台创新创业赛事路演,投融资服务
  10. java pdf打印_Java 打印PDF文档的3种方法
  11. 小活动大收获,大叔做烧烤摊,两周收款10万,竟如此简单!
  12. 年仅 28 岁就宣布从字节跳动退休?
  13. Opengl glm配置出错
  14. 听湖畔大学:史玉柱谈企业文化
  15. 研究调查脉搏血氧饱和度仪使用Masimo RRp(R)读取儿科患者呼吸率的精度
  16. 经典的10句人生箴言
  17. spring boot项目使用ojdbc8连接oracle 12c(12.2.0.1.0),解决启动极慢问题!
  18. Could not open the editor: URLDecoder: Illegal hex characters in escape (%) pattern - For input stri
  19. 嫉妒(译本)--- 作者:弗兰西斯•培根
  20. listen函数详解

热门文章

  1. Vupsen, Pupsen and 0 思维,凑系数
  2. python.exe在哪个文件_pythonexe文件中的images文件夹放在哪里?
  3. linux管道原子性写入,write(2)/ read(2)linux中进程之间的原子性
  4. jsonobject中getkey_FastJson中JSONObject用法及常用方法总结
  5. 这几种Java异常处理方法,你会吗?
  6. ElasticSearch集成SpringData史上最全查询教程
  7. python数值运算符也叫内置运算符_Python全栈工程师(数值类型、运算符)
  8. 性能测试工具_磁盘性能测试工具fio
  9. 页面饼图不显示_教你烙饼的懒人做法,不沾手不揉面,比蛋糕还香,凉了更好吃...
  10. sqlite常见使用总结