算法—判断字符串是否为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 * " 这些转义字符中不包括“.”,所以程序会报错!
因此需要使用“.”来表示“.”字符串,从而以小数点作为依据将字符进行分割。
- 【Spring实战】—— 3 使用facotry-method创建单例Bean总结
- JS面向对象高级特性
- 图解闭包
- 【web必知必会】——图解HTTP(上)
- 【web必知必会】—— 图解HTTP(下)
- 【Spring实战】—— 14 传统的JDBC实现的DAO插入和读取
- 【AngularJS】—— 4 表达式
- 【AngularJS】—— 5 表单
- 【AngularJS】—— 1 初识AngularJs
- 【AngularJS】—— 2 初识AngularJs(续)
- 【AngularJS】—— 3 我的第一个AngularJS小程序
- 【Spring实战】—— 2 构造注入
- 共享单车运维“朋友圈”越来越宽,乱停乱放现象有望改善吗?
- 【Spring实战】—— 15 Spring JDBC模板使用
- 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 数组属性和方法
- Js 的事件循环(Event Loop)机制以及实例讲解
- 你不知道的js中关于this绑定机制的解析[看完还不懂算我输]
- 解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
- 算法-查找斐波纳契数列中第 N 个数
- 在python中修改.properties文件的操作
- Django Xadmin多对多字段过滤实例
- 算法-姓名去重
- Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
- Python Opencv中用compareHist函数进行直方图比较对比图片
- 面试题-树状数组结构转化
- Xadmin+rules实现多选行权限方式(级联效果)
- Android仿主流壁纸App设置界面
- Android中WindowManager与WMS的解析
- 算法(简单)_搜索二维矩阵&分解质因数
- 算法_最大子数组&合并排序数组