IPUtils::isValidRange() only works with 0.0.0.0\0 type ranges, not 0.0.0.0-0.0.0.0 ranges
This is at odds with other code such as IPUtils::parseRange() which does...
While I understand the regex is probably quicker than parseRange...
Can we update it from
const RE_IP_RANGE = self::RE_IP_ADD . '\/' . self::RE_IP_PREFIX;
to something like (and same for IPv6)
const RE_IP_RANGE = self::RE_IP_ADD . '\/' . self::RE_IP_PREFIX . '|' . self::RE_IP_ADD . '-' . self::RE_IP_ADD;