Java正則驗(yàn)證IP的方法實(shí)例分析【測(cè)試可用】
本文實(shí)例講述了Java正則驗(yàn)證IP的方法。分享給大家供大家參考,具體如下:
網(wǎng)上用正則驗(yàn)證IP的表達(dá)式有很多,一搜一大堆,可以自己寫(xiě),但很麻煩又費(fèi)事,用別人寫(xiě)的難免有bug。
找了幾個(gè)測(cè)試一下,不是有bug,就是連正確的IP也不認(rèn)識(shí)了,好多還信誓旦旦,仿佛自己做過(guò)測(cè)試似的。
今天找到一個(gè)比較行的通的表達(dá)式,不過(guò)也有一個(gè)小的Bug(用*號(hào)時(shí),不報(bào)錯(cuò))
package des;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class IP {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
IP p=new IP();
String ii="127.0.0.1";
String ii2="127.0.0.";
String ii3="127.0.0.1000";
String ii4="256.0.0.1";
String ii5="127.0.0.gg";
String ii6="127.h.0.1";
String ii7="127.555.0.1";
String ii8="127.00.0.1";
String ii9="127.0.04.1";
String ii10="127.100.#.1";
String ii11="127.*.0.1";
String ii12="127.0.0.000";
String ii13="192.168.3.12";
System.out.println("來(lái)自 www.dhdzp.com 的測(cè)試結(jié)果:");
p.isMatches(ii);
p.isMatches(ii2);
p.isMatches(ii3);
p.isMatches(ii4);
p.isMatches(ii5);
p.isMatches(ii6);
p.isMatches(ii7);
p.isMatches(ii8);
p.isMatches(ii9);
p.isMatches(ii10);
p.isMatches(ii11);
p.isMatches(ii12);
p.isMatches(ii13);
}
public boolean isMatches(String ip){
boolean flag=false;
try{
// String regex="[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+";
String regex="^((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]|[*])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]|[*])$";
//正確的是
//String regex="^((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]|[*])$";
// String regex="\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(ip);
if(m.find()){
System.out.println("successss");
return true;
}else{
System.out.println("falsss");
}
}catch(Exception e){
e.printStackTrace();
}
return flag;
}
}
運(yùn)行結(jié)果如下圖:

可見(jiàn)倒數(shù)第3個(gè)帶有*的是錯(cuò)的,但還是輸出成功了
將正則改成:
String regex="^((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]|[*])$";
測(cè)試結(jié)果如下:

至此完全正確!
PS:這里再為大家提供2款非常方便的正則表達(dá)式工具供大家參考使用:
JavaScript正則表達(dá)式在線測(cè)試工具:
http://tools.jb51.net/regex/javascript
正則表達(dá)式在線生成工具:
http://tools.jb51.net/regex/create_reg
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Java正則表達(dá)式技巧大全》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
- Java正則驗(yàn)證正整數(shù)的方法分析【測(cè)試可用】
- Java正則驗(yàn)證電話(huà),手機(jī),郵箱,日期,金額的方法示例
- java基于正則提取字符串中的數(shù)字功能【如提取短信中的驗(yàn)證碼】
- 正則驗(yàn)證不能含有中文的實(shí)現(xiàn)方法【jQuery與java實(shí)現(xiàn)】
- Java常用正則表達(dá)式驗(yàn)證工具類(lèi)RegexUtils.java
- Java使用正則表達(dá)式對(duì)注冊(cè)頁(yè)面進(jìn)行驗(yàn)證功能實(shí)現(xiàn)
- java正則表達(dá)式驗(yàn)證工具類(lèi)
- java正則表達(dá)式表單驗(yàn)證類(lèi)工具類(lèi)(驗(yàn)證郵箱、手機(jī)號(hào)碼、qq號(hào)碼等)
- java正則表達(dá)式驗(yàn)證郵箱、電話(huà)號(hào)碼示例
- java正則表達(dá)式驗(yàn)證函數(shù)
相關(guān)文章
mybatis判斷int是否為空的時(shí)候,需要注意的3點(diǎn)
這篇文章主要介紹了mybatis判斷int是否為空的時(shí)候,需要注意的3點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
Jenkins+maven持續(xù)集成的實(shí)現(xiàn)
這篇文章主要介紹了Jenkins+maven持續(xù)集成的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Java Builder模式構(gòu)建MAP/LIST的實(shí)例講解
下面小編就為大家?guī)?lái)一篇Java Builder模式構(gòu)建MAP/LIST的實(shí)例講解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10

