在 Java 中验证 IPv4 地址

新手上路,请多包涵

我想使用 Java 验证 IPv4 地址。它应该使用 点-十进制表示法 编写,因此它应该有 3 个点(“ . ”),点之间没有字符,数字,数字应该在有效范围内。应该怎么做?

原文由 iRunner 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 610
2 个回答

请参阅使用 apache 公共库的 https://stackoverflow.com/a/5668971/1586965 InetAddressValidator

或者你可以使用这个功能 -

 public static boolean validate(final String ip) {
    String PATTERN = "^((0|1\\d?\\d?|2[0-4]?\\d?|25[0-5]?|[3-9]\\d?)\\.){3}(0|1\\d?\\d?|2[0-4]?\\d?|25[0-5]?|[3-9]\\d?)$";

    return ip.matches(PATTERN);
}

原文由 Akarshit Wal 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用正则表达式非常简单(但请注意,这比使用 Apache Commons Utility 的 worpet 的答案 效率低得多且更难阅读)

 private static final Pattern PATTERN = Pattern.compile(
        "^(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");

public static boolean validate(final String ip) {
    return PATTERN.matcher(ip).matches();
}

基于后 Mkyong

原文由 Necronet 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题