有这样的一个IP地址段和他的子网掩码,书写形式为"192.168.0.0/19",这种格式用正则表达式怎么写?

解决方案 »

  1.   

    不追求严谨性的话:
    "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}/\\d{1,3}"主要问题是有效地址范围是:1~254,正则实现这种范围检查比较麻烦;另外掩码其实也有取值范围问题。
    所以如果要严谨的话,还是拆开来解析成数字进行检查。
      

  2.   


    public static void main(String[] args){
    String reg = "(25[0-5]|2[0-4][0-9]|1[0-9]{2}|0?[1-9][0-9]|0{0,2}[0-9])(\\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|0?[1-9][0-9]|0{0,2}[0-9])){3}/(25[0-5]|2[0-4][0-9]|1[0-9]{2}|0?[1-9][0-9]|0{0,2}[0-9])";
    System.out.println("127.0.0.1/12".matches(reg));
        }无聊写的...
      

  3.   

    ^(((\\d)|([1-9]\\d)|(1\\d{1,2})|(2[0-4]\\d)|(25[0-5]))\\.){3}((\\d)|([1-9]\\d)|(1\\d{1,2})|(2[0-4]\\d)|(25[0-5]))/((\\d)|([1-9]\\d)|(1\\d{1,2})|(2[0-4]\\d)|(25[0-5]))$