本文實例講述了java正則驗證ip的方法。分享給大家供大家參考,具體如下:
網上用正則驗證ip的表達式有很多,一搜一大堆,可以自己寫,但很麻煩又費事,用別人寫的難免有bug。
找了幾個測試一下,不是有bug,就是連正確的ip也不認識了,好多還信誓旦旦,仿佛自己做過測試似的。
今天找到一個比較行的通的表達式,不過也有一個小的bug(用*號時,不報錯)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
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( "來自 www.zmynmublwnt.cn 的測試結果:" ); 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; } } |
運行結果如下圖:
可見倒數第3個帶有*的是錯的,但還是輸出成功了
將正則改成:
1
|
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]|[*])$" ; |
測試結果如下:
至此完全正確!
希望本文所述對大家java程序設計有所幫助。
原文鏈接:http://blog.csdn.net/lushuaiyin/article/details/6863135