关于正折表达式,请大家帮忙看看,多谢了!
我想匹配这样的字符串:
a1w2/1234/
正折如下:
\\S{0,4}/\\d{0,4}现在我想表达整个字符串总长度不超过10,如果d{0,4}是0,那么S{0,4}变成S{0,8}也是允许的,反过来也一样,就是说以下都是被允许的:
a1w2/1234/
a1w2er34//
/01231234/
a1w/12344/
a1w3w/123/
就是说控制总长度,请问如何写这个正折表达式?多谢了!

解决方案 »

  1.   

    (/d{8}/)|(S{1}/d{7}/)|(S{2}/d{6}/)|(S{3}/d{5}/)|(S{4}/d{4}/)|(S{5}/d{3}/)|(S{6}/d{2}/)|(S{7}/d{1}/)|(/d{8}/)
      

  2.   

    假设你的字符串叫sr
    if(sr.length() <= 10 && sr.matches("\\S{0,8}/\\d{0,8}/")){
      System.out.println("true");
    }else{
      System.out.println("flase");
    }
      

  3.   

    个人人为
    -------------
     WIN_ANGEL(金麟岂是池中物,一遇风云便化龙!) ( ) 信誉:100    Blog   加为好友  2007-04-23 11:13:09  得分: 0  
     
       假设你的字符串叫sr
    if(sr.length() <= 10 && sr.matches("\\S{0,8}/\\d{0,8}/")){
      System.out.println("true");
    }else{
      System.out.println("flase");
    }
      ------------已经满足你的要求了(可以有不同的组合),你可以先试了再说,
     
      

  4.   

    楼主没必要那样吧 没必要死钻牛角尖 能达到目的就好 简洁明了最好 如果你非要用正则写 那就像2楼那位朋友给出的那样写   再不就这样
    if(sr.matches("([\\S]|[\\d]|[/]){0,10}") && sr.matches("\\S{0,8}/\\d{0,8}/")){
      System.out.println("true");
    }else{
      System.out.println("flase");
    }
    如果字符串不超过10就是上面那么写{0,10} 如果是固定必须10位 那就是{10}
    应该可以了吧 上面是2个正则 楼主你不会是想用1个正则表达式就达到目的吧 我感觉是不可能 最起码我的水平是不行