1.长度大于5,且其中叠字不出现4次以上2.大于1949-10-01且小于2050-10-01   (一个日期格式)

解决方案 »

  1.   

    Pattern p = Pattern.compile("(.)(?=(.*?\\1){4,})");
    String str = "1213124215262";
    Matcher m = p.matcher(str);
    while(m.find()){
    System.out.println(m.group());
    System.out.println("incorrect!");
    break;
    }
      

  2.   

    这个给的貌似不对啊
    bbbcaaaa   就不行啊,虽然长度大于5,但叠字只有4个,没到4个以上,您的正则没反映我写的是:(.)\1{4,}|^(.){0,5}$
      

  3.   

    1.长度大于5,且其中叠字不出现4次以上
    用一个正则很难实现,可拆分成2个。
    A:长度大于5 
        ^.{5,}$
    B:叠字出现4次以上
       (.)\1{4,}
    程序处理 (A && !B)2.大于1949-10-01且小于2050-10-01 (一个日期格式)
       光是日期验证用正则就不太可能(超复杂),建议这个用程序对转入做日期验证,大小的话就不用正则了,转换成日期格式直接比较就可以了。不拘泥于某一个技术,提供最合适的解决方法才是最优的解决方案。
      

  4.   

    //大于1949-10-01且小于2050-10-01 (一个日期格式)
    String reg1 = "((\\d{2}(([02468][048])|([13579][26]))\\-((((0[13578])|(1[02]))\\-((0[1-9])|([1-2][0-9])|(3[01])))|(((0[469])|(11))\\-((0[1-9])|([1-2][0-9])|(30)))|(02\\-((0[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))\\-((((0[13578])|(1[02]))\\-((0[1-9])|([1-2][0-9])|(3[01])))|(((0[469])|(11))\\-((0[1-9])|([1-2][0-9])|(30)))|(02\\-((0[1-9])|(1[0-9])|(2[0-8]))))))";
    String reg2 = "(?=(((1949\\-1[0-2]\\-\\d{2}))|(19[5-9][0-9]\\-\\d{2}\\-\\d{2})|(20[0-4]\\d\\-\\d{2}\\-\\d{2})|(2050\\-((0[1-9]\\-\\d{2})|(10\\-01)))))";
    //System.out.println(reg2+reg1);
    Pattern p = Pattern.compile(reg2+reg1);
    String str = "1949-10-32";
    Matcher m = p.matcher(str);
    while(m.find()){
    System.out.println(m.group());
    System.out.println("correct!");
    break;
    }
      

  5.   

    String reg1 = "((\\d{2}(([02468][048])|([13579][26]))\\-((((0[13578])|(1[02]))\\-((0[1-9])|([1-2][0-9])|(3[01])))|(((0[469])|(11))\\-((0[1-9])|([1-2][0-9])|(30)))|(02\\-((0[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))\\-((((0[13578])|(1[02]))\\-((0[1-9])|([1-2][0-9])|(3[01])))|(((0[469])|(11))\\-((0[1-9])|([1-2][0-9])|(30)))|(02\\-((0[1-9])|(1[0-9])|(2[0-8]))))))$";
    String reg2 = "^(?=(((1949\\-1[0-2]\\-\\d{2}))|(19[5-9][0-9]\\-\\d{2}\\-\\d{2})|(20[0-4]\\d\\-\\d{2}\\-\\d{2})|(2050\\-((0[1-9]\\-\\d{2})|(10\\-01)))))";
    //System.out.println(reg2+reg1);
    Pattern p = Pattern.compile(reg2+reg1);
    String str = "1949-10-02";
    Matcher m = p.matcher(str);
    if(m.matches()){
    //System.out.println(m.group());
    System.out.println("correct!");
    }else{
    System.out.println("incorrect!");
    }