📜  如何在Java中使用正则表达式验证 IP 地址

📅  最后修改于: 2022-05-13 01:54:29.978000             🧑  作者: Mango

如何在Java中使用正则表达式验证 IP 地址

给定一个 IP 地址,任务是在正则表达式的帮助下验证这个 IP 地址。
IP 地址是一个格式为“ABCD”的字符串,其中 A、B、C 和 D 的取值范围为 0 到 255。允许使用前导零。 A、B、C 或 D 的长度不能大于 3。
例子:

Input: str = "000.12.12.034"
Output: True

Input: str = "000.12.234.23.23"
Output: False

Input: str = "121.234.12.12"
Output: True

Input: str = "I.Am.not.an.ip"
Output: False

方法:
在本文中,IP 地址是在正则表达式或正则表达式的帮助下验证的。以下是使用正则表达式解决此问题的步骤:

  1. 获取字符串。
  2. 验证 IP 地址的正则表达式:
// ReGex to numbers from 0 to 255
zeroTo255 -> (\\d{1, 2}|(0|1)\\d{2}|2[0-4]\\d|25[0-5])

// ReGex to validate complete IP address
IPAddress -> zeroTo255 + "\\." + zeroTo255 
                + "\\." + zeroTo255 
                + "\\." + zeroTo255;
  1. 在哪里:
    • \d 表示正则表达式中的数字,与 [0-9] 相同
    • \\d{1, 2} 捕获任何一位或两位数字
    • (0|1)\\d{2} 捕获以 0 或 1 开头的任何三位数字。
    • 2[0-4]\\d 捕获 200 到 249 之间的数字。
    • 25[0-5] 捕获 250 到 255 之间的数字。
  2. 将字符串与正则表达式匹配。在Java中,这可以使用 Pattern.matcher() 来完成。
  3. 如果字符串与给定的正则表达式匹配,则返回 true,否则返回 false。

下面是上述方法的实现:

Java
// Java program to validate an IP address
// using Regular Expression or ReGex
 
import java.util.regex.*;
 
class IPAddressValidation {
 
    // Function to validate the IPs address.
    public static boolean isValidIPAddress(String ip)
    {
 
        // Regex for digit from 0 to 255.
        String zeroTo255
            = "(\\d{1,2}|(0|1)\\"
              + "d{2}|2[0-4]\\d|25[0-5])";
 
        // Regex for a digit from 0 to 255 and
        // followed by a dot, repeat 4 times.
        // this is the regex to validate an IP address.
        String regex
            = zeroTo255 + "\\."
              + zeroTo255 + "\\."
              + zeroTo255 + "\\."
              + zeroTo255;
 
        // Compile the ReGex
        Pattern p = Pattern.compile(regex);
 
        // If the IP address is empty
        // return false
        if (ip == null) {
            return false;
        }
 
        // Pattern class contains matcher() method
        // to find matching between given IP address
        // and regular expression.
        Matcher m = p.matcher(ip);
 
        // Return if the IP address
        // matched the ReGex
        return m.matches();
    }
 
    // Driver code
    public static void main(String args[])
    {
        // Checking for True case.
        // Test Case: 1
        System.out.println("Test Case 1:");
        String str1 = "000.12.12.034";
        System.out.println("Input: " + str1);
        System.out.println(
            "Output: "
            + isValidIPAddress(str1));
 
        // Test Case: 2
        System.out.println("\nTest Case 2:");
        String str2 = "121.234.12.12";
        System.out.println("Input: " + str2);
        System.out.println(
            "Output: "
            + isValidIPAddress(str2));
 
        // Checking for False case.
        // Test Case: 3
        System.out.println("\nTest Case 3:");
        String str3 = "000.12.234.23.23";
        System.out.println("Input: " + str3);
        System.out.println(
            "Output: "
            + isValidIPAddress(str3));
 
        // Test Case: 4
        System.out.println("\nTest Case 4:");
        String str4 = "I.Am.not.an.ip";
        System.out.println("Input: " + str4);
        System.out.println(
            "Output: "
            + isValidIPAddress(str4));
    }
}


输出:
Test Case 1:
Input: 000.12.12.034
Output: true

Test Case 2:
Input: 121.234.12.12
Output: true

Test Case 3:
Input: 000.12.234.23.23
Output: false

Test Case 4:
Input: I.Am.not.an.ip
Output: false