Java IP 地址 (IPv4) 正则表达式示例

2024 年 9 月 10 日 | 阅读 3 分钟

IP 地址是连接到网络的每个设备的唯一数字标识符。IP 地址的第一个版本是 32 位地址,用句点 (.) 分隔。

在 Java 中,RegexRegular Expression 是定义字符串模式的 API。它广泛用于搜索、验证和操作字符串和密码。在本节中,我们将学习如何使用正则表达式 (regex) 验证 IP 地址。

IP 地址验证规则

  • IP 地址必须是 A.B.C.D 这样的字符串格式。
  • A、B、C 或 D 的长度不能大于 3。
  • A、B、C 和 D 的值应介于 0 到 255 之间。以下是 IP 地址中每个数字的有效组合。
    1. 任何一位或两位数字。
    2. 任何以 1 开头的 3 位数字。
    3. 任何以 2 开头的 3 位数字,其中第二位是 0 到 4。
    4. 任何以 25 开头的 3 位数字,其中第三位是 0 到 5。
  • 不允许前导零。

示例

输入: str = "172.16.254.1"

输出: True

输入: str = "000.123.12.23.28"

输出: False

输入: str = "I.Am.not.an.ip"

输出: False

IP 地址的正则表达式

获取字符串。

创建一个正则表达式来验证 IP 地址。

// 验证 0 到 255 之间数字的正则表达式

zeroTo255 -> (\\d{1, 2}|(0|1)\\d{2}|2[0-4]\\d|25[0-5])

// 验证完整 IP 地址的正则表达式

IPAddress -> zeroTo255 + "\\." + zeroTo255 + "\\." + zeroTo255 + "\\." + zeroTo255;

  • \d 表示 0 到 9 之间的数字的正则表达式。
  • \\d{1, 2} 表示任何 1 位或 2 位数字。
  • (0|1)\\d{2} 表示一个以 0 或 1 开头的 3 位数字。
  • 2[0-4]\\d 表示 200 到 249 之间的数字。
  • 25[0-5] 表示 250 到 255 之间的数字。

为了匹配模式,Java Pattern 类提供了 matcher() 函数。该方法创建一个模式,将给定的输入与此模式进行匹配。如果字符串与给定的正则表达式匹配,则返回 true,否则返回 false。

语法

注意:可能不止一个正则表达式可以验证 IP 地址。

其他一些 IP 地址的正则表达式

\b(([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.(2[0-5][0-5]|1[0-9][0-9]|[1-9][0-9]|[1-9]))\b

^(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$

让我们创建一个 Java 程序来验证 IP 地址。

ValidateIPAddress.java

输出

Input: 172.16.254.1
Output: true
Input: 111.234.162.100
Output: true
Input: 000.129.24.231.89
Output: false
Input: ab.cd.nef.gh.jk
Output: false