Java中校驗IPv4和IPv6
来源:互联网 发布:贴吧防秒删软件 编辑:程序博客网 时间:2024/05/02 01:09
結合網上給的示例程序,借鉴前辈们的成果,完善一下Java语言中利用正则表达式校验IPv4和IPv6
请看代码,欢迎留言交流。
import java.util.regex.Matcher;import java.util.regex.Pattern;public class IpAddressTest {public static boolean isIPv6(String address){ boolean result = false; String regHex = "(\\p{XDigit}{1,4})"; //没有双冒号 String regIPv6Full = "^(" + regHex + ":){7}" + regHex + "$"; //双冒号在中间或者没有双冒号 String regIPv6AbWithColon = "^(" + regHex + "(:|::)){0,6}" + regHex + "$"; //双冒号开头 String regIPv6AbStartWithDoubleColon = "^(" + "::(" + regHex + ":){0,5}" + regHex + ")$"; String regIPv6 = "^(" + regIPv6Full + ")|(" + regIPv6AbStartWithDoubleColon + ")|(" + regIPv6AbWithColon + ")$"; //System.out.println("regIPv6 =" + regIPv6); //regIPv6 =^(^((\p{XDigit}{1,4}):){7}(\p{XDigit}{1,4})$)|(^(::((\p{XDigit} //{1,4}):){0,5}(\p{XDigit}{1,4}))$)|(^((\p{XDigit}{1,4})(:|::)){0,6}(\p //{XDigit}{1,4})$)$ //等价于^(^::$)|(^([\\d|a-fA-F]{1,4}:){7}([\\d|a-fA-F]{1,4})$)|(^(:: //(([\\d|a-fA-F]{1,4}):){0,5}([\\d|a-fA-F]{1,4}))$)|(^(([\\d|a-fA-F]{1,4}) //(:|::)){0,6}([\\d|a-fA-F]{1,4})$)$ //下面还要处理地址为::的情形和地址包含多于一个的::的情况(非法) if (address.indexOf(":") != -1){ if (address.length() <= 39) { String addressTemp = address; int doubleColon = 0; if(address.equals("::"))return true; while (addressTemp.indexOf("::") != -1) { addressTemp = addressTemp.substring(addressTemp .indexOf("::") + 2, addressTemp.length()); doubleColon++; } if (doubleColon <= 1){ result = address.matches(regIPv6); } } } return result; }public static boolean checkIpAddress(String address) { String checkPattern = "^(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])((\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])){3}|(\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])){5})$"; Pattern pattern = Pattern.compile(checkPattern); Matcher matcher = pattern.matcher(address); return matcher.matches(); }public static void main(String[] args){boolean bt=checkIpAddress("192.168.0.0");System.out.println(bt); bt = checkIpAddress("192.168.2.3.1.1");//6段ipv6格式 System.out.println(bt); bt = checkIpAddress("bd5.168.2.1"); System.out.println(bt); bt = checkIpAddress("192.168.254.10"); System.out.println(bt); bt = checkIpAddress("192.168.254.10.1.1.1.1"); System.out.println(bt); bt = checkIpAddress("192.168.254.10.1.1.1"); System.out.println(bt); bt = isIPv6("192:168:254:10:1:1:1:1"); System.out.println(bt);}}
0 0
- Java中校驗IPv4和IPv6
- IPv4和IPv6
- IPV6和IPV4
- IPv4和IPv6
- IPv4和ipv6
- ipv4和ipv6比较
- IPv4和IPv6
- IPv4和IPv6
- IPv4和IPv6支持
- IPv4和IPv6区别
- IPv6和IPv4对应表
- IPv6和IPv4对应表
- ipv4和ipv6的区别
- IPv4地址和IPv6地址
- IPv4和IPv6的区别
- IPV4和IPV6详细对比
- 比较IPv4和IPv6协议
- IPv4和IPv6的区别
- 排序——快速排序挖坑法的变形
- Array(7) -- Jump Game,Missing Number,Combination Sum
- java使用openoffice将office系列文档转换为PDF
- Java 理论与实践: 垃圾收集简史
- QC安装验证错误
- Java中校驗IPv4和IPv6
- Qt插件问题
- 【故障处理】告警日志报“ORA-01565 Unable To open Spfile”
- 浅谈JVM的实现与垃圾回收机制
- 113. Path Sum II
- Android 6.0动态权限申请--事例代码
- LPC中Fixed linear predictor的详细说明
- 2016年 中国大学生程序设计竞赛合肥赛区(ccpc)解题报告
- Maven 安装与Eclipse搭建