Java正则验证IP的方法实例分析【测试可用】
程序员文章站
2024-02-26 08:39:46
本文实例讲述了java正则验证ip的方法。分享给大家供大家参考,具体如下:
网上用正则验证ip的表达式有很多,一搜一大堆,可以自己写,但很麻烦又费事,用别人写的难免有bu...
本文实例讲述了java正则验证ip的方法。分享给大家供大家参考,具体如下:
网上用正则验证ip的表达式有很多,一搜一大堆,可以自己写,但很麻烦又费事,用别人写的难免有bug。
找了几个测试一下,不是有bug,就是连正确的ip也不认识了,好多还信誓旦旦,仿佛自己做过测试似的。
今天找到一个比较行的通的表达式,不过也有一个小的bug(用*号时,不报错)
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.jb51.net 的测试结果:"); 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个带有*的是错的,但还是输出成功了
将正则改成:
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]|[*])$";
测试结果如下:
至此完全正确!
ps:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
javascript正则表达式在线测试工具:
正则表达式在线生成工具:
更多关于java算法相关内容感兴趣的读者可查看本站专题:《java正则表达式技巧大全》、《java数据结构与算法教程》、《java操作dom节点技巧总结》、《java文件与目录操作技巧汇总》和《java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。