求教smb://192.168.0.2/或者smb://username:[email protected]/的正则式,注:必须以smb://开头,且以/结尾。如果存在用户名和密码,以第二种形式表示。

解决方案 »

  1.   


    Pattern pattern  = Pattern.compile("^(smb://)(\\w+:\\w+@)?(\\d{0,3}\\.){3}(\\w{0,3})/$");
    这个应该可以
      

  2.   

    username中应该可以包含数字的。
      

  3.   

    smb://username:[email protected]/
    这个能通过。
    smb://username:[email protected]/
    这样也能通过。
    smb://user2name:[email protected]/
    这样却不能通过
    所以,不太严谨。
      

  4.   

     String reg = "smb://((.*?:)(.*?@))?192.168.0.2/$";测试片段 String t2 = "smb://username:[email protected]/";
        String reg = "smb://((.*?:)(.*?@))?192.168.0.2/$";
        if(t2.matches(reg)){
         System.out.println("true");
        }else if(t2.matches(reg)){
         System.out.println("true");
        }
      

  5.   

    更正下正则,少了一个开头符号 ^  String reg = "^smb://((.*?:)(.*?@))?192.168.0.2/$"; String t1 = "smb://192.168.0.2/";
        String t2 = "smb://username:[email protected]/";
        String reg = "^smb://((.*?:)(.*?@))?192.168.0.2/$";
        if(t2.matches(reg)){
         System.out.println("true");
        }else if(t2.matches(reg)){
         System.out.println("true");
        }
      

  6.   

    ip匹配:(2[0-4]\d|25[0-5]|[01]?\d\d?){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
      

  7.   

    另外,对于IP的判断,用正则太长了,下面仅仅是对IP的一个数字进行判断,即0-255之间
    (([0-9])|([1-9][0-9])|([1-2][0-5][0-5]))
      

  8.   

    上面少点了哦((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
      

  9.   

    谢谢楼上各位提醒
    按照各位的提醒后更改成下面
    其中ip验证用的是ls仁兄的
    呵呵!
    Pattern pattern  = Pattern.compile("^(smb://)(\\w+:\\w+@)?((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)/$");
      

  10.   

    ip匹配 
    String ip = "([1-9]|[1-9]\\d|1\\d{2}|2[0-1]\\d|22[0-3])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"
      

  11.   

    如果
    smb://192.168.0.2/或者smb://username:[email protected]/的后面还有字符串呢,且以“/”结尾,如:smb://192.168.0.2/hello/或者smb://username:[email protected]/hello/
      

  12.   

    试下: Pattern p = Pattern
                    .compile("^(smb://)(\\w+:\\w+@)?((25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])(/\\w+)*/");
    应该可以满足14楼要求