用正则表达式验证IPv6地址的例子
发布时间:2020-12-14 02:26:28 所属栏目:百科 来源:网络整理
导读:public class Hello { public boolean isIPv6(String address) { boolean result = false; String regHex = "(p{XDigit}{1,4})"; //没有双冒号 String regIPv6Full = "^(" + regHex + ":){7}" + regHex + "$"; //双冒号在中间或者没有双冒号 String regIPv
public class Hello { public 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,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 void main(String[] args) { Hello hello=new Hello(); boolean bln=false; bln=hello.isIPv6("::"); System.out.println("Start...") ; if (bln) System.out.println("OK") ; else System.out.println("NO") ; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |