Java正規表示式驗證IP地址

2020-07-16 10:05:12
IP 地址是網路上每台計算機的唯一標識,因此 IP 地址的錯誤輸入將使程式無法執行。下面使用前面學習的正規表示式知識,編寫一個 Java 程式來驗證 IP 地址是否合法。

在定義正規表示式之前,首先要知道一個正確 IP 地址的格式及組成部分。IP 地址由 4 位元組構成,每位元組的值為 0~255,各位元組通過一個句點分隔。因此,IP 地址中的每位元組有至少一個,至多三個數位。

下面是為 IP 地址編寫的正規表示式:
d{1,3}.d{1,3}.d{1,3}.d{1,3}
以上正規表示式對 IP 做簡單的匹配,不完全和 IP 的規則一致。如果想完全匹配,讀者可以重新修改匹配的正規表示式。

建立 Test22 類,在該類的 main() 方法中編寫驗證 IP 地址的程式碼。程式碼如下:
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test22 {
    public static void main(String[] args) {
        String regex = "d{1,3}.d{1,3}.d{1,3}.d{1,3}";
        String answer = "Y";
        do {
            System.out.print("請輸入 IP 地址:");
            Scanner scan = new Scanner(System.in);
            String phone = scan.next();    // 接收使用者在控制台輸入的電話號碼
            Pattern pattern = Pattern.compile(regex);    // 編譯正規表示式
            Matcher matcher = pattern.matcher(phone);    // 建立給定輸入模式的匹配器
            boolean bool = matcher.matches();
            if(bool) {   // 如果驗證通過
                System.out.println("輸入的 IP 地址正確。");
            } else {
                System.out.println("輸入的IP地址格式錯誤。");
            }
            System.out.print("是否繼續輸入?(Y/N 或者 y/n)");
            answer = scan.next();
        }while(answer.equalsIgnoreCase("Y"));
        System.out.println("程式結束。");
    }
}
執行程式,然後輸入不同格式的 IP 地址,輸出結果如下所示:
請輸入 IP 地址:11.154.15.1
輸入的 IP 地址正確。
是否繼續輸入?(Y/N 或者 y/n)y
請輸入 IP 地址:22a.7.68.9
輸入的IP地址格式錯誤。
是否繼續輸入?(Y/N 或者 y/n)n
程式結束。