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



我刚刚检查了此帖子中的IP检查,并检查了该子网格格式。

private boolean isValidCidrIp(String cidrIp) {
    boolean isValid = true;
    try {
        new SubnetUtils(cidrIp);
    } catch (IllegalArgumentException e) {
        isValid = false;
    }
    return isValid;
}

,但我真的不想 import一个软件包,因为如果我有其他选择,我想检查IP和CIDR。

所以我想出了这种regx模式:

private static final Pattern 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地址。

有一些更好的想法吗?

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());

最新更新