首页 > 编程 > Java > 正文

Java正则验证IP的方法实例分析【测试可用】

2019-11-26 11:33:14
字体:
来源:转载
供稿:网友

本文实例讲述了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.VeVB.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个带有*的是错的,但还是输出成功了

将正则改成:

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正则表达式在线测试工具:
http://tools.VeVB.COm/regex/javascript

正则表达式在线生成工具:
http://tools.VeVB.COm/regex/create_reg

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java正则表达式技巧大全》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表