正则表达式判断yyyy-mm-dd格式的字符串 用于判断2012-02-01格式的日期字符串,java中用Pattern p1 = Pattern.compile("^2[0-9]{3}d-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$");,这里不能匹配,请问哪里有问题呢?如果想加上闰月判断呢?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接获取一个日期用simpleformatDate转发成2012-02-01格式就可以啊、不用判断 import java.util.regex.Pattern ;import java.util.regex.Matcher ;public class RegexDemo03{ public static void main(String args[]){ String str = "1983-07-27" ; // 指定好一个日期格式的字符串 String pat = "\\d{4}-\\d{2}-\\d{2}" ; // 指定好正则表达式 Pattern p = Pattern.compile(pat) ; // 实例化Pattern类 Matcher m = p.matcher(str) ; // 实例化Matcher类 if(m.matches()){ // 进行验证的匹配,使用正则 System.out.println("日期格式合法!") ; }else{ System.out.println("日期格式不合法!") ; } }}; 据论坛某果大神的博客,这玩意很难整不如用simpledateformat来搞 果然难n%4 Yn%100 Nn%400 Y//只是年份的验证 public static void main(String[] args) { //29 String day29 = "(^[48][0]*$)" + "|(^\\d*([02468][48]|[13579][26]|[2468]0)$)" + "|(^\\d*([02468][48]|13579][26])0$)" + "|(^\\d*([24680][480]|[13579][26])00$)"; //验证 for (int i = 1; i < 10000000; i += 1) { //不能被400整除,能被100整除的都是平年 if (i % 100 == 0 && i % 400 != 0) { //如果得出是闰年 则出错 if (String.valueOf(i).matches(day29)) { System.out.println(i); break; } } else { if (i % 4 == 0) { //如果得出不是闰年 则出错 if (!String.valueOf(i).matches(day29)) { System.out.println(i); break; } } } } } 你不要想了,这种正则表达式写出来,估计你看都看不懂!不建议你这么做,请使用代码进行判断!(?:[0-9]{1,4}(?<!^0?0?0?0))-(?:0?[1-9]|1[0-2])-(?:0?[1-9]|1[0-9]|2[0-8]|(?:(?<=-(?:0?[13578]|1[02])-)(?:29|3[01]))|(?:(?<=-(?:0?[469]|11)-)(?:29|30))|(?:(?<=(?:(?:[0-9]{0,2}(?!0?0)(?:[02468]?(?<![13579])[048]|[13579][26]))|(?:(?:[02468]?[048]|[13579][26])00))-0?2-)(?:29))) 详见:http://blog.csdn.net/bao110908/article/details/2132973这个正则表达式构建花费的时间超过 7 个小时! 我倒觉得还不如截取字符串来判断更方便些。或者按楼上说的用SimpleDateFormat 书上题目 04-17 谁能告诉我在oracle中动态创建一个表 FileReader的问题 哪位大虾用hashtable比较熟,帮帮我:) 请前辈们指教 如何不显示科学计数法? 求助!怎样让JB9不再自动运行JB0SS??? 怎样把ByteBuffer型数据转换成Strin型数据 能否讲一下CMP Bean, BMP Bean, Session Bean的本质区别 大家用JBuilder 7做swing(UI部分),用的JDK是哪个版本?哪个版本较好? 竞赛题目、求牛人解答、JAVA算法题、有时间限制 javaSE小程序
不用判断
import java.util.regex.Pattern ;
import java.util.regex.Matcher ;
public class RegexDemo03{
public static void main(String args[]){
String str = "1983-07-27" ; // 指定好一个日期格式的字符串
String pat = "\\d{4}-\\d{2}-\\d{2}" ; // 指定好正则表达式
Pattern p = Pattern.compile(pat) ; // 实例化Pattern类
Matcher m = p.matcher(str) ; // 实例化Matcher类
if(m.matches()){ // 进行验证的匹配,使用正则
System.out.println("日期格式合法!") ;
}else{
System.out.println("日期格式不合法!") ;
}
}
};
这玩意很难整
不如用simpledateformat来搞
n%4 Y
n%100 N
n%400 Y//只是年份的验证
public static void main(String[] args) {
//29
String day29 = "(^[48][0]*$)"
+ "|(^\\d*([02468][48]|[13579][26]|[2468]0)$)"
+ "|(^\\d*([02468][48]|13579][26])0$)"
+ "|(^\\d*([24680][480]|[13579][26])00$)";
//验证
for (int i = 1; i < 10000000; i += 1) {
//不能被400整除,能被100整除的都是平年
if (i % 100 == 0 && i % 400 != 0) {
//如果得出是闰年 则出错
if (String.valueOf(i).matches(day29)) {
System.out.println(i);
break;
}
} else {
if (i % 4 == 0) {
//如果得出不是闰年 则出错
if (!String.valueOf(i).matches(day29)) {
System.out.println(i);
break;
}
}
}
}
}