Java 判断是否IP 或者是网段
介绍
在Java中,我们可以使用正则表达式来判断一个字符串是否是合法的IP地址或者是网段。本文将介绍如何通过编写代码来实现这个功能。
流程
下面是整个实现过程的流程图:
flowchart TD
A[开始] --> B(获取输入字符串)
B --> C(判断是否是IP地址)
C --> D(判断是否是网段)
D --> E[结束]
C --> F[结束]
判断是否是IP地址
首先,我们需要判断输入字符串是否是一个合法的IP地址。一个合法的IP地址由四个数字组成,每个数字的取值范围是0-255,数字之间用点号"."分隔。下面是判断IP地址的代码示例:
public boolean isIpAddress(String input) {
// 使用正则表达式进行匹配
String pattern = "^((\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])$";
return input.matches(pattern);
}
代码解释:
^((\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])$
是一个正则表达式,用于匹配IP地址的模式。input.matches(pattern)
用于判断输入字符串是否与模式匹配。
判断是否是网段
如果输入字符串不是一个合法的IP地址,我们还需要判断它是否是一个合法的网段。一个合法的网段由一个IP地址和一个子网掩码组成,用斜杠"/"分隔。下面是判断网段的代码示例:
public boolean isSubnet(String input) {
// 使用正则表达式进行匹配
String pattern = "^((\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])/(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])$";
return input.matches(pattern);
}
代码解释:
^((\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])/(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])$
是一个正则表达式,用于匹配网段的模式。input.matches(pattern)
用于判断输入字符串是否与模式匹配。
完整代码示例
下面是一个完整的示例代码,包含了判断IP地址和网段的方法:
public class IpAddressUtil {
public static void main(String[] args) {
String input = "192.168.1.1";
boolean isIpAddress = isIpAddress(input);
boolean isSubnet = isSubnet(input);
System.out.println("Is IP Address: " + isIpAddress);
System.out.println("Is Subnet: " + isSubnet);
}
public static boolean isIpAddress(String input) {
// 使用正则表达式进行匹配
String pattern = "^((\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])$";
return input.matches(pattern);
}
public static boolean isSubnet(String input) {
// 使用正则表达式进行匹配
String pattern = "^((\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])/(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])$