如何在Java中有效地检查IP和CIDR格式?

如何在Java中有效地检查IP和CIDR格式?,java,ip,cidr,Java,Ip,Cidr,我刚刚检查了这个IP检查和这个检查CIDR格式 private boolean isValidCidrIp(String cidrIp) { boolean isValid = true; try { new SubnetUtils(cidrIp); } catch (IllegalArgumentException e) { isValid = false; } return isValid; } 但是我真的不想导入包,

我刚刚检查了这个IP检查和这个检查CIDR格式

private boolean isValidCidrIp(String cidrIp) {
    boolean isValid = true;
    try {
        new SubnetUtils(cidrIp);
    } catch (IllegalArgumentException e) {
        isValid = false;
    }
    return isValid;
}
但是我真的不想导入包,因为如果我有其他选择,我想检查IP和CIDR

所以我想出了这个Regx模式:

私有静态最终模式IP_V4_Pattern=Pattern.compile( “([01]?\\d\\d?| 2[0-4]\\d | 25[0-5])\\\){3}([01]?\\d\\d?| 2[0-4]\\d | 25[0-5])(/([0-2]?\\d | 3[0-2])?$”

但它似乎真的不够好,每个字段都会包含一些难看的前导
0
。更糟糕的是,将会有很多无效的IP地址


你有更好的主意吗

根据他们使用的
private static final String IP\u ADDRESS=“(\\d{1,3})\.(\\d{1,3})\.(\\d{1,3})\.(\\d{1,3})\.”你也看过“吓人”吗?非常感谢。很抱歉回复晚了,我刚刚检查了
源代码,我想我随信附上的Regx现在已经好了。看起来更健壮。这不适用于无效的ip地址。999.999.999.999/999也将被此正则表达式视为有效,我们都知道这不是有效的ip v4地址。
Pattern cidrPattern = Pattern.compile("(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,3})");

System.out.println(cidrPattern.matcher("192.168.30.0/24").matches());
System.out.println(cidrPattern.matcher("192.168.30.160").matches());