算法—判断字符串是否为IP地址
时间:2022-07-22
本文章向大家介绍算法—判断字符串是否为IP地址,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
判断原则: 判断该字符长度是否是7-15位之间(0.0.0.0-255.255.255.255.255)
是否能以小数点分成四段
每段是否都是数字
每段数字是否都在0-255之间
只有以上四个条件都满足了,才是IP的正确格式,
实现该算法有两种比较简单的方法,一种是常规判断,另一种是利用正则表达式进行判断,下面以函数的形式实现这两种方法,可以直接复制函数使用,传入的参数是待判断的字符串,返回的是布尔变量。
(该算法以Java语言实现,使用时请做适当调整!)
常规判断法
//判断字符是否是IP
public boolean isCorrectIp(String ipString) {
//1、判断是否是7-15位之间(0.0.0.0-255.255.255.255.255)
if (ipString.length()<7||ipString.length()>15) {
return false;
}
//2、判断是否能以小数点分成四段
String[] ipArray = ipString.split("\.");
if (ipArray.length != 4) {
return false;
}
for (int i = 0; i < ipArray.length; i++) {
//3、判断每段是否都是数字
try {
int number = Integer.parseInt(ipArray[i]);
//4.判断每段数字是否都在0-255之间
if (number <0||number>255) {
return false;
}
} catch (Exception e) {
return false;
}
}
return true;
}
正则表达式判断法
//利用正则表达式判断字符是否为IP
public boolean isCorrectIp2(String ipString) {
String ipRegex = "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"; //IP地址的正则表达式
//如果前三项判断都满足,就判断每段数字是否都位于0-255之间
if (ipString.matches(ipRegex)) {
String[] ipArray = ipString.split("\.");
for (int i = 0; i < ipArray.length; i++) {
int number = Integer.parseInt(ipArray[i]);
//4.判断每段数字是否都在0-255之间
if (number <0||number>255) {
return false;
}
}
return true;
}
else {
return false; //如果与正则表达式不匹配,则返回false
}
}
测试结果:
在程序中以小数点作为依据进行分割时,之所以使用“.”而不直接使用“.”的原因是:
调用split(“.”)方法时,程序会把“.”作为模式匹配字符,就像在正则表达式中“.”表示任何字符是一样的道理。所以在这里“.”是特殊字符。
调用split(“.”)方法报错的原因是在“b t n f r * " 这些转义字符中不包括“.”,所以程序会报错!
因此需要使用“.”来表示“.”字符串,从而以小数点作为依据将字符进行分割。
- matplotlib的基本用法(四)——设置legend图例
- TensorFlow深度学习笔记 文本与序列的深度模型
- 究竟哪里安全?加拿大VS中国治安大数据起底!意料之中还是之外?
- muduo网络库学习之EventLoop(四):EventLoopThread 类、EventLoopThreadPool 类
- 从小程序游戏开放可以看出,微信已经开始转移小程序战场了
- 17年AI在游戏中完胜人类,AlphaGo的下一个目标是什么?DeepMind有一个45年超越人类计划
- PHP常用的正则表达式
- ASP.NET Core管道深度剖析(3):管道是如何处理HTTP请求的?
- 浅析负载均衡的6种算法,Ngnix的5种算法
- 字符串的学习
- 【Scikit-Learn 中文文档】内核岭回归 - 监督学习 - 用户指南 | ApacheCN
- 可视化(番外篇)——在Eclipse RCP中玩转OpenGL
- 养良好C语言编程风格,编优质C语言代码,这才是C语言的开始
- IBM让《星球大战》中的各种黑科技变成现实
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 挖洞经验 | 以SSRF获取Zimbra邮件服务的用户明文凭据
- Office文件追踪方案探索
- 如何全方位地给 SQL Server 做测试
- 下下下一代防火墙关键技术漫谈
- Mysql事务隔离级别
- ent orm笔记1---快速尝鲜
- UsoDllLoader:一款功能强大的武器化特权文件写入工具
- 宇智波程序笔记10-为什么你使用的 Spring Security OAuth 过期了
- 无线电侧信道攻击利用复现:监听显示器显示内容
- typeScript 配置文件该怎么写?
- 内网渗透:不出网渗透技巧
- Python自学成才之路 生成器的使用
- ent orm笔记2---schema使用(上)
- 力扣1514——概率最大的路径
- Pytest之自定义mark