1.长度大于5,且其中叠字不出现4次以上2.大于1949-10-01且小于2050-10-01 (一个日期格式)
解决方案 »
- 求助。求高人
- linux WebSphere 乱码
- hibernate INTEGER 问题
- ejb3.0疑问
- 在JBuilder2006运行出现如下错误:"viewAllEmployee.jsp": Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/
- 对DB2熟悉的朋友请进来坐坐
- struts高手请进!!!!!!!!!
- 各位大虾,请推荐几本书
- 那位朋友有维新的JAVA视频培训课程,我用张孝祥老师的全套视频和您换着看
- EJB出错!!
- 用java,j2ee开发登录页面,记录上次登录时间和登录次数的源码实例
- 一个简单的问题,求救
String str = "1213124215262";
Matcher m = p.matcher(str);
while(m.find()){
System.out.println(m.group());
System.out.println("incorrect!");
break;
}
bbbcaaaa 就不行啊,虽然长度大于5,但叠字只有4个,没到4个以上,您的正则没反映我写的是:(.)\1{4,}|^(.){0,5}$
用一个正则很难实现,可拆分成2个。
A:长度大于5
^.{5,}$
B:叠字出现4次以上
(.)\1{4,}
程序处理 (A && !B)2.大于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;
}
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!");
}