我是个初学者,用正则式在一个字串里查找并输出YYYY-XX-ZZ格式的日期,求其简单的正则式,只求其格式有下面四种值:
"2005-01-02"
"2005-2-1"
"2005-01-2"
"2005-1-06"
有上面四种中任一相应格式,即合法.
菜鸟求教!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
"2005-01-02"
"2005-2-1"
"2005-01-2"
"2005-1-06"
有上面四种中任一相应格式,即合法.
菜鸟求教!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
String patternStr2 = "/(\\d{2,4})[\\-](\\d{1,2})[\\-](\\d{1,2})/";
Pattern pBase2 = Pattern.compile(patternStr2,Pattern.CASE_INSENSITIVE);
Matcher mBase2 = pBase2.matcher(replacedStr2);
boolean result2 = mBase2.find();
StringBuffer sb2 = new StringBuffer();while(result2){
mBase2.appendReplacement(sb2, mBase2.group(0));
System.out.println("===" + mBase2.group(0));
result2 = mBase2.find();
}如上:不能通过.烦高手再指教!!!!!!!!!!!!
System.out.println(f.parse("xxxx-xx-xx"));看是否抛异常
这样是对的,但是只是字符的匹配,要真正做到时间合理就是不出现2005-13-65这种表达^_^就不适合了
还是做个控件,点击返回日期算了^_^
String patternStr2 = "(\\d{2,4})[\\-](\\d{1,2})[\\-](\\d{1,2})";
Pattern pBase2 = Pattern.compile(patternStr2,Pattern.CASE_INSENSITIVE);
Matcher mBase2 = pBase2.matcher(replacedStr2);
//boolean result2 = mBase2.find();
StringBuffer sb2 = new StringBuffer(); while(mBase2.find()){
mBase2.appendReplacement(sb2, mBase2.group(0));
System.out.println("===" + mBase2.group(0));
//result2 = mBase2.find();
}
^((?:(?:(?:19|20|21)\\d{2})[-](?:0?[13578]|1[02])[-](?:0?[1-9]|[12]\\d|3[01]))|(?:(?:(?:19|20|21)\\d{2})[-](?:0?[13456789]|1[012])[-](?:0?[1-9]|[12]\\d|30))|(?:(?:(?:19|20|21)\\d{2})[-]02(?:0?[1-9]|1\\d|2[0-8]))|(?:(?:(?:20(?:0[048]|[2468][048]|[13579][26]))|(?:(?:19|21)(?:0[48]|[2468][048]|[13579][26])))0229))$,闰年,月大月小都包括进去了.从1900-2199.用SimpleDateFormat检查日期是否合法有时候不能用.比如格式是yyyyMMdd时,你输入一个20051038,照样通过检查.