算法—判断字符串是否为IP地址
目录
Hello,大家好,我是灰小猿!
今天在这里和小伙伴记录一下判断字符串是否是IP地址的算法,
实现该算法我们首先应该知道,IP地址应该依据哪些条件:
判断原则:
-
判断该字符长度是否是7-15位之间(0.0.0.0-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)
-
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 \* \\" 这些转义字符中不包括“\.”,所以程序会报错!
因此需要使用“\\.”来表示“\.”字符串,从而以小数点作为依据将字符进行分割。
觉得有用记得点赞关注哟!
大灰狼陪你一起进步!
文章来源: blog.csdn.net,作者:灰小猿,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_44985880/article/details/107780585
- 点赞
- 收藏
- 关注作者
评论(0)