Java 正则表达式:判断 IP 地址的有效性

在许多网络应用程序中,经常需要验证用户输入的 IP 地址是否有效。在 Java 中,可以使用正则表达式来判断 IP 地址的有效性。本文将介绍如何使用正则表达式来验证 IP 地址,并提供相关的代码示例。

IP 地址的格式

IP 地址是一个由四个数字组成的序列,每个数字的取值范围是从 0 到 255,数字之间使用点号(.)分隔。例如,"192.168.0.1" 是一个有效的 IP 地址。

IP 地址的正则表达式可以通过验证每个数字的取值范围和点号的位置来判断其有效性。

判断 IP 地址的正则表达式

下面是一个用于判断 IP 地址有效性的正则表达式:

String ipPattern = "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
                   "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
                   "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
                   "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";

该正则表达式的含义如下:

  • ^:以开始
  • [01]?\\d\\d?:匹配 0-199 之间的数字
  • |:或
  • 2[0-4]\\d:匹配 200-249 之间的数字
  • |:或
  • 25[0-5]:匹配 250-255 之间的数字
  • \\.:匹配点号(.)
  • $:以结束

使用正则表达式判断 IP 地址的有效性

可以使用 PatternMatcher 类来判断一个字符串是否匹配某个正则表达式。下面是一个示例代码,演示了如何使用正则表达式判断 IP 地址的有效性:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class IPAddressValidator {

    private static final String IP_PATTERN =
            "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
            "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
            "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
            "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";

    private final Pattern pattern;
    private Matcher matcher;

    public IPAddressValidator() {
        pattern = Pattern.compile(IP_PATTERN);
    }

    public boolean validate(final String ip) {
        matcher = pattern.matcher(ip);
        return matcher.matches();
    }

    public static void main(String[] args) {
        IPAddressValidator validator = new IPAddressValidator();
        String ip = "192.168.0.1";
        System.out.println("Is " + ip + " valid? " + validator.validate(ip));
    }
}

该代码中定义了一个 IPAddressValidator 类,其中包含了正则表达式的定义和验证方法。在 main 方法中创建了一个 IPAddressValidator 对象,并使用 validate 方法来验证给定的 IP 地址。输出结果将显示该 IP 地址的有效性。

类图

下面是 IPAddressValidator 类的类图:

classDiagram
    class IPAddressValidator {
        - pattern: Pattern
        - matcher: Matcher
        --
        + validate(ip: String): boolean
    }

总结

本文介绍了如何使用正则表达式判断 IP 地址的有效性。通过定义一个匹配 IP 地址的正则表达式,并使用 PatternMatcher 类进行验证,可以轻松地判断一个 IP 地址是否有效。使用正则表达式可以简化代码,提高开发效率。

希望本文对你理解如何使用 Java 判断 IP 地址的正则表达式有所帮助。如果有任何问题,请随时提问。