本文实例讲述了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.zzvips.com 的测试结果:" ); 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