1.形如1,1-3,* 的表达式,用逗号间隔,可以是单个数字,或用减号表示的区间,或*
2.时间的表达式,如1,表示一点,也可以是1:00,也可以是01:00等等,能表达出一点的形式,
折腾了半天没弄出来,求教。。

解决方案 »

  1.   

    第一个没看懂,第二个可以试试:
    String ss = "2:09";
    Pattern p = Pattern.compile("([01]?[0-9]|2[0-3])(:[0-5][0-9]|:[0-9])?");
    Matcher m = p.matcher(ss);
    if(m.find()) {
       System.out.println(m.group());
       }
      

  2.   

    1:      (\\d+-\\d+,|\\d,|\\*,)*(\\d+-\\d+|\\d|\\*)
    2:      \\d+|\\d{1,2}:\\d{2}
      

  3.   


    /*
    1.形如1,1-3,* 的表达式,用逗号间隔,可以是单个数字,或用减号表示的区间,或*
    2.时间的表达式,如1,表示一点,也可以是1:00,也可以是01:00等等,能表达出一点的形式,
    折腾了半天没弄出来,求教。。
    */import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test{
    public static void main(String[] args){
    //subject1();
    subject2();
    } private static void subject1(){
    String content = "1,1-3,*,-+41,df";
    String regex = "[^,]+";
    Matcher matcher = getMatcher(regex,content); while(matcher.find()){
    System.out.print(matcher.group() + " ");
    }
    } private static void subject2(){
    //String content 
    String time = "一点六十分";
    String regex1 = "^(0?\\d|1[0-2])$";
    String regex2 = "^(0?\\d|1[0-2]):([0-5]\\d)$";
    String nums = "一二三四五六七八九";
    String nums1 = "一二三四五";
    String regex3 = "^([零" + nums + "十]|十一|十二)点((([" + nums1 + "]十([" + nums + "])?)|零[" + nums + "])分)?$"; boolean result1 = getMatcher(regex1,time).matches();
    boolean result2 = getMatcher(regex2,time).matches();
    boolean result3 = getMatcher(regex3,time).matches(); if(result1 || result2 || result3){
    System.out.println("correct! The time '" + time + "' is valid!");
    }else{
    throw new IllegalArgumentException("Illegal Argument! the time format is invalid!");
    }
    } private static Matcher getMatcher(String regex,String content){
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(content);
    return matcher;
    }
    }
      

  4.   

    正则第三应该改成String regex3 = "^([零" + nums + "十]|十一|十二)点((([" + nums1 + "]?十([" + nums + "])?)|零[" + nums + "])分)?$";
    因为大部分人会直接说 零点十五分 而不是 零点一十五分以上代码可以测试如下形式String time = "1";  //correct
    String time = "13"; //incorrect
    String time = "01": //correct
    String time = "010";//incorrect
    String time = "09:23";//correct
    String time = "一点";//correct
    String time = "一点五十分";//correct
    String time = "一点零九分";//correct
    String time = "一点六十分";//incorrect