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
程式結束。