IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 测试用例:两大方法教你怎么判断一个字符串是不是ip地址? -> 正文阅读

[网络协议]测试用例:两大方法教你怎么判断一个字符串是不是ip地址?

IP的格式:(1~255).(0~255).(0~255).(0~255)

方法一:基于对字符串的处理

public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
String ipStr = scanner.next();
boolean isIpLegal = isIpLegal(ipStr);
if(isIpLegal) {
System.out.println(ipStr + " 合法");
}else{
System.out.println(ipStr + " 非法");
}
}
public static boolean isIpLegal(String str){

//检查ip是否为空

if(str == null){

return false;

}

//检查ip长度,最短为:x.x.x.x(7位),最长为:xxx.xxx.xxx.xxx(15位)

if(str.length() < 7 || str.length() > 15){

return false;

}

//对输入字符串的首末字符判断,如果是"."则是非法IP

if(str.charAt(0) == '.' || str.charAt(str.length()-1) == '.'){

return false;

}

//按"."分割字符串,并判断分割出来的个数,如果不是4个,则是非法IP

String[] arr = str.split("\\.");
if(arr.length != 4){
return false;
}
//对分割出来的每个字符串进行单独判断

for(int i = 0; i < arr.length; i++){

//如果每个字符串不是一位字符,且以'0'开头,则是非法的IP,如:01.002.03.004

if(arr[i].length() > 1 && arr[i].charAt(0) == '0'){

return false;

}

//对每个字符串的每个字符进行逐一判断,如果不是数字0-9,则是非法的IP

for(int j = 0; j < arr[i].length(); j++){
if (arr[i].charAt(j) < '0' || arr[i].charAt(j) > '9'){
return false;
}
}
}
//对拆分的每一个字符串进行转换成数字,并判断是否在0~255

for(int i = 0; i < arr.length; i++){
int temp = Integer.parseInt(arr[i]);
if(i == 0){
if (temp < 1 || temp > 255){
return false;
}
}
else{
if(temp < 0 || temp > 255){
return false;
}
}
}
return true;
}

方法二:正则表达式

public static void main(String[] args) {
Scanner scanner =?new Scanner(System.in);
String ipStr = scanner.next();
boolean isIpLegal = isIpLegal(ipStr);
if(isIpLegal) {
System.out.println(ipStr + " 合法");
}
else{
System.out.println(ipStr + " 非法");
}
}
public static boolean isIpLegal(String ipStr) {
String ipRegEx = "^([1-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))(\\.([0-9]|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))){3}$";
Pattern pattern = Pattern.compile(ipRegEx);
Matcher matcher = pattern.matcher(ipStr);
if (matcher.matches()) {
return true;
} else {
return false;
}
}

测试用例:

等价类划分:

有效可用的IP地址

A类

1.0.0.0 -126.255.255.254

A私有

10.0.0.0 -10.255.255.254

B类

128.0.0.0 -191.255.255.254

B私有

172.16.0.0 -172.31.255.254

C类

192.0.0.0 -223.255.255.254

C私有

192.168.0.0-192.168.255.254

windows自动分配

169.254.0.0-169.254.255.254

有效但不可用的IP地址

D

224.0.0.0 -239.255.255.254

E

240.0.0.0 -255.255.255.254

全网

0.x.x.x, x.x.x.0

广播

x.x.x.255

回环

127.0.0.0 -127.255.255.254

输入

结果

64.11.22.33

有效可用

10.12.13.14

有效可用,不能直接访问公网

151.123.234.56

有效可用

172.20.123.56

有效可用,不能直接访问公网

192.127.35.65

有效可用

192.168.128.128

有效可用,不能直接访问公网

169.254.15.200

有效可用,不能直接访问公网

224.1.2.3

有效不可用,超过有效范围(D类)

250.11.22.33

有效不可用,超过有效范围(E类)

0.200.3.4

有效不可用,全网地址

64.11.22.0

有效不可用,全网地址

10.12.13.255

有效不可用,广播地址

127.50.60.70

有效不可用,回环地址

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-17 13:06:20  更:2021-11-17 13:08:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年7日历 -2024/7/3 20:53:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码