今天在这里和小伙伴记录一下判断字符串是否是IP地址的算法,

实现该算法我们首先应该知道,IP地址应该依据哪些条件:

判断原则:

  1. 判断该字符长度是否是7-15位之间(0.0.0.0-255.255.255.255.255)
  2. 是否能以小数点分成四段
  3. 每段是否都是数字
  4. 每段数字是否都在0-255之间

只有以上四个条件都满足了,才是IP的正确格式,

实现该算法有两种比较简单的方法,一种是常规判断,另一种是利用正则表达式进行判断,下面以函数的形式实现这两种方法,可以直接复制函数使用,传入的参数是待判断的字符串,返回的是布尔变量。

(该算法以Java语言实现,使用时请做适当调整!)

常规判断法

1. //判断字符是否是IP
2. public boolean isCorrectIp(String ipString) {

3.  //1、判断是否是7-15位之间(0.0.0.0-255.255.255.255.255)
4.  if (ipString.length()<7||ipString.length()>15) {

5.  return false;
6.  }
7.  //2、判断是否能以小数点分成四段
8.  String[] ipArray = ipString.split("."); 
9.  if (ipArray.length != 4) {

10.  return false;
11.  }
12.  for (int i = 0; i < ipArray.length; i++) {

13.  //3、判断每段是否都是数字
14.  try {

15.  int number = Integer.parseInt(ipArray[i]);
16.  //4.判断每段数字是否都在0-255之间
17.  if (number <0||number>255) {

18.  return false;
19.  }
20.  } catch (Exception e) {

21.  return false;
22.  }
23.  } 
24.  return true;
25.  }
正则表达式判断法
1. //利用正则表达式判断字符是否为IP
2. public boolean isCorrectIp2(String ipString) {

3.  String ipRegex = "d{1,3}.d{1,3}.d{1,3}.d{1,3}"; //IP地址的正则表达式
4.  //如果前三项判断都满足,就判断每段数字是否都位于0-255之间
5.  if (ipString.matches(ipRegex)) {

6.  String[] ipArray = ipString.split(".");
7.  for (int i = 0; i < ipArray.length; i++) {

8.  int number = Integer.parseInt(ipArray[i]);
9.  //4.判断每段数字是否都在0-255之间
10.  if (number <0||number>255) {

11.  return false;
12.  }
13.  }
14.  return true;
15.  }
16.  else {

17.  return false; //如果与正则表达式不匹配,则返回false
18.  } 
19. }

测试结果:




JAVA设备离线判断 java判断ip_JAVA设备离线判断


在程序中以小数点作为依据进行分割时,之所以使用“.”而不直接使用“.”的原因是:

调用split(“.”)方法时,程序会把“.”作为模式匹配字符,就像在正则表达式中“.”表示任何字符是一样的道理。所以在这里“.”是特殊字符。

调用split(“.”)方法报错的原因是在“b t n f r * " 这些转义字符中不包括“.”,所以程序会报错!

因此需要使用“.”来表示“.”字符串,从而以小数点作为依据将字符进行分割。