当前位置: 首页 > news >正文

Java实现的IP4地址合法判断新思路

文章目录

  • 一,需求概述
  • 二,代码实现
  • 三,运行结果

一,需求概述

给定一字符串,判断是否为合法的IP4地址。

二,代码实现


import java.util.List;
import java.util.Objects;
import java.util.Random;
import java.util.stream.Collectors;
import java.util.stream.Stream;import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.junit.jupiter.api.Test;import lombok.extern.slf4j.Slf4j;/*** ip4地址合法判断<br>* 注意:0.0.0.0(表示本地网络)、255.255.255.255(表示本地广播)是合法的* * @see [类、类#方法、类#成员]*/
@Slf4j
public class IP4Test
{@Testpublic void test001(){for (int i = 0; i < 10; i++){List<String> nums = new Random().ints(4, -10, 300).mapToObj(Objects::toString).collect(Collectors.toList());String ip4 = StringUtils.join(nums, ".");log.info("IP4地址: {} ==> {}", ip4, isIp4(ip4));}}private Boolean isIp4(String ip4){String[] ipArrs = StringUtils.split(ip4, ".");return StringUtils.countMatches(ip4, ".") == 3 // 3dots&& ipArrs.length == 4 // 4位&& Stream.of(ipArrs).filter(it -> StringUtils.equals(it, String.valueOf(NumberUtils.toInt(it)))).map(NumberUtils::toInt).filter(it -> (0 <= it && it <= 255))// [0, 255].count() == 4;}
}

三,运行结果

2025-09-01 21:20:21.386  INFO 1220 --- [           main] c.f.t.IP4Test                            : IP4地址: 163.278.264.254 ==> false
2025-09-01 21:20:21.393  INFO 1220 --- [           main] c.f.t.IP4Test                            : IP4地址: 82.31.212.204 ==> true
2025-09-01 21:20:21.393  INFO 1220 --- [           main] c.f.t.IP4Test                            : IP4地址: 147.4.7.257 ==> false
2025-09-01 21:20:21.393  INFO 1220 --- [           main] c.f.t.IP4Test                            : IP4地址: 205.127.278.4 ==> false
2025-09-01 21:20:21.393  INFO 1220 --- [           main] c.f.t.IP4Test                            : IP4地址: 147.142.72.191 ==> true
2025-09-01 21:20:21.393  INFO 1220 --- [           main] c.f.t.IP4Test                            : IP4地址: 33.26.-10.33 ==> false
2025-09-01 21:20:21.394  INFO 1220 --- [           main] c.f.t.IP4Test                            : IP4地址: 130.281.293.240 ==> false
2025-09-01 21:20:21.394  INFO 1220 --- [           main] c.f.t.IP4Test                            : IP4地址: 192.203.292.3 ==> false
2025-09-01 21:20:21.394  INFO 1220 --- [           main] c.f.t.IP4Test                            : IP4地址: 158.99.278.165 ==> false
2025-09-01 21:20:21.394  INFO 1220 --- [           main] c.f.t.IP4Test                            : IP4地址: 188.131.294.172 ==> false
http://www.dtcms.com/a/362217.html

相关文章:

  • GPT - 5 技术前瞻与开发者高效接入路径探索​
  • 高性能客服系统源码实现
  • 文件上传漏洞基础及挖掘流程
  • 2013 NeuralIPS Translating Embeddings for Modeling Multi-relational Data
  • JAVA后端开发——MyBatis 结合 MySQL JSON 类型查询详解
  • vue组件中实现鼠标右键弹出自定义菜单栏
  • 智慧交通时代,数字孪生为何成为关键力量?
  • Map接口
  • 基于若依框架前端学习VUE和TS的核心内容
  • 手搓3D轮播图组件以及倒影效果
  • 基于STM32的ESP8266连接华为云(MQTT协议)
  • leetcode46.全排列
  • java web 练习 简单增删改查,多选删除,包含完整的sql文件demo。生成简单验证码前端是jsp
  • (Mysql)MVCC、Redo Log 与 Undo Log
  • C#知识学习-012(修饰符)
  • Python OpenCV图像处理与深度学习:Python OpenCV边缘检测入门
  • FastLED库完全指南:打造炫酷LED灯光效果
  • 【Excel】将一个单元格内​​的多行文本,​​拆分成多个单元格,每个单元格一行​​
  • 【设计模式】--重点知识点总结
  • C++ Bellman-Ford算法
  • Linux并发与竞争实验
  • 软件使用教程(四):Jupyter Notebook 终极使用指南
  • 数据分析编程第八步:文本处理
  • 设计模式-状态模式 Java
  • 华清远见25072班I/O学习day2
  • PostgreSQL备份指南:逻辑与物理备份详解
  • 椭圆曲线群运算与困难问题
  • 【数据分享】多份土地利用矢量shp数据分享-澳门
  • AI产品经理面试宝典第81天:RAG系统架构演进与面试核心要点解析
  • Qt中的信号与槽机制的主要优点