用正则表达式验证IPv6地址的例子

来源:互联网 发布:win10网络开关是灰色的 编辑:程序博客网 时间:2024/05/27 09:46


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,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 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") ;}}


原创粉丝点击