java代码校验ip/mask格式是否正确
时间: 2024-09-10 08:21:14 浏览: 52
在Java中,验证IP地址及其子网掩码格式的正确性通常涉及到正则表达式和网络编程知识。你可以创建一个函数,接受字符串作为输入,然后检查它们是否符合IPv4或IPv6地址以及子网掩码的标准格式。以下是一个简单的示例:
```java
import java.util.regex.Pattern;
public class IPAddressValidator {
private static final String IP_ADDRESS_PATTERN =
"(^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$)";
private static final String SUBNET_MASK_PATTERN = "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\/(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$";
public static boolean validate(String ipAddress, String subnetMask) {
Pattern ipPattern = Pattern.compile(IP_ADDRESS_PATTERN);
Pattern maskPattern = Pattern.compile(SUBNET_MASK_PATTERN);
if (!ipPattern.matcher(ipAddress).matches()) {
return false;
}
if (!maskPattern.matcher(subnetMask).matches()) {
return false;
}
// 对于IPv4地址,还需检查子网掩码是否合理,例如对于/8、/16、/24等常见的划分
if (ipAddress.contains(".")) {
int prefixLength = getPrefixLength(subnetMask);
if (prefixLength < 8 || prefixLength > 32) {
return false;
}
}
return true;
}
private static int getPrefixLength(String subnetMask) {
String[] parts = subnetMask.split("/");
return Integer.parseInt(parts[1]);
}
}
```
在这个例子中,我们定义了两个正则表达式模式分别用于匹配IPv4和IPv6地址,以及子网掩码。`validate`方法首先检查输入的IP地址和子网掩码是否符合格式,如果符合,则进一步对IPv4地址的子网掩码合理性进行检查。
阅读全文