【實(shí)例描述】
IP 地址是網(wǎng)絡(luò)上每臺(tái)計(jì)算機(jī)的標(biāo)識(shí),在瀏覽器中輸入的網(wǎng)址也是要經(jīng)過(guò)DNS 服務(wù)器轉(zhuǎn)換
為IP
地址才能找到服務(wù)器的,在很多網(wǎng)絡(luò)程序中要求輸入服務(wù)器IP 地址或者對(duì)方連接的IP 地
址,IP 地址的錯(cuò)誤輸入將使程序無(wú)法運(yùn)行。本實(shí)例將實(shí)現(xiàn)對(duì)IP
地址的驗(yàn)證功能,實(shí)例的運(yùn)行
效果如圖4.14 所示。
【實(shí)現(xiàn)過(guò)程】
(1)在Eclipse 中新建項(xiàng)目CheckIP,并在其中創(chuàng)建一個(gè)CheckIP.java
文件。在該類(lèi)的主方
法中創(chuàng)建標(biāo)準(zhǔn)輸入流的掃描器對(duì)象,接收用戶(hù)輸入的IP 地址。核心代碼如下所示:
protected void
do_button_actionPerformed(ActionEvent e) {
String text = ipField.getText();
// 獲取用戶(hù)輸入
String info = matches(text); // 對(duì)輸入文本進(jìn)行IP
驗(yàn)證
showMessageDialog(null, info); // 用對(duì)話框輸出驗(yàn)證結(jié)果
}
(2)編寫(xiě)IP
地址的mathches()方法,該方法利用正則表達(dá)式對(duì)輸入的字符串進(jìn)行驗(yàn)證,并
返回驗(yàn)證結(jié)果,關(guān)鍵代碼如下所示。
public String
matches(String text) {
if (text != null && !text.isEmpty()) {
//
定義正則表達(dá)式
String regex = "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\."
+
"(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
+
"(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
+
"(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$";
// 判斷IP 地址是否與正則表達(dá)式匹配
if
(text.matches(regex)) {
// 返回判斷信息
return text + "\n 是一個(gè)合法的IP 地址!";
}
else {
// 返回判斷信息
return text + "\n 不是一個(gè)合法的IP 地址!";
}
}
//
返回判斷信息
return "請(qǐng)輸入要驗(yàn)證的IP 地址!";
}
【代碼解析】
本實(shí)例的關(guān)鍵點(diǎn)在于IP
地址格式與數(shù)字范圍的驗(yàn)證,用戶(hù)在輸入IP 地址時(shí),程序可以獲
取的只有字符串類(lèi)型,所以本實(shí)例利用字符串的靈活性和正則表達(dá)式搭配進(jìn)行IP
地址格式與
范圍的驗(yàn)證。該方法是String 字符串類(lèi)的方法,用于判斷字符串與制定的正則表達(dá)式是否匹配。
其聲明語(yǔ)法如下:
public
boolean mathches(String regex);
Java 程序設(shè)計(jì)經(jīng)典300
例
XXX
VIII
【知識(shí)擴(kuò)展】
在正則表達(dá)式中,“.”代表任何一個(gè)字符,因此在正則表達(dá)式中如果想使用普通意義的點(diǎn)
字符“.”,必須使用轉(zhuǎn)義字符“\”。