67,513
社区成员
发帖
与我相关
我的任务
分享
[0-9]{4}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30)))
请教yyyy年mm月dd日的正则表达式该怎么写
public class Test {
public void test(String parm){
// 没加时间验证的YYYY-MM-DD
String regex = "^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(parm);
System.out.println(parm + ":" + m.matches());
}
public static void main(String[] args) {
Test t = new Test();
t.test("2015-10-10");
t.test("2008-2-29");
t.test("2008-2-28");
t.test("2015-13-10");
t.test("2015-1-35");
}
}
//package net.csdn.question;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Test{
public static void main(String[] args){
String year = "^\\d+年";
String md31 = "((0[13578]|1[02])月(0[1-9]|[12]\\d|3[01])日$)";
String md30 = "((0[469]|11)月(0[1-9]|[12]\\d|30)日$)";
String md_2_Leap = "(02月(0[1-9]|[12]\\d)日$)";
String md_2_NLeap = "(02月(0[1-9]|1\\d|2[0-8])日$)";
String leap = year + "(" + md31 + "|" + md30 + "|" + md_2_Leap + ")";//这个是闰年的
String noLeap = year + "(" + md31 + "|" + md30 + "|" + md_2_NLeap + ")";//这个是非闰年的
String date = "2012年02月29日";
Pattern pattern = Pattern.compile(leap);//这里根据需要加载对应是否闰年的表达式
Matcher matcher = pattern.matcher(date);
if(matcher.matches()){
System.out.println("\"" + date + "\" is valid date!");
System.exit(0);
}
System.out.println("\"" + date + "\" isn't valid date!");
}
}
package net.csdn.question;
//http://bbs.csdn.net/topics/391836999
//判断日期形势是否有效:假设日期形式为: yyyy-mm-dd(注:这里的yyyy不一定是四位数)
//主要需要判断年份是否为闰年,然后对闰年及非闰年进行分开判断有效性
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DateFormatValid {
public static void main(String[] args) {
String[] dates = new String[7];
dates[0] = "12452-July-3th";// 不符合yyyy-mm-dd格式 Invalid
dates[1] = "2015-10-32";// 日期超过31 Invalid
dates[2] = "2015-13-21";// 月份超过12 Invalid
dates[3] = "2015-02-29";// 非闰年,二月份29 Invalid
dates[4] = "2012-02-29";// 闰年,二月份29 Valid
dates[5] = "2015-01-31";// 一月份31 Valid
dates[6] = "2015-04-30";// 四月份30 Valid
String date = null;
for (int i = 0; i < dates.length;) {
date = dates[i];
System.out.print((++i) + ": ");
if (isValid(date)) {
System.out.println("\"" + date + "\" 是有效的日期!");
} else {
System.out.println("\"" + date + "\" 不是有效日期!");
}
}
}
public static boolean isValid(String date) {
String regex = "(\\d+)-\\d{2}-\\d{2}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(date);
if (!matcher.matches()) {
System.out.print("你所提供的数据:\"" + date + "\" 不符合标准格式yyyy-mm-dd ");
return false;
}
String year = matcher.group(1);
boolean isLeapYear = isLeapYear(year);
year = "^\\d+-";
String md31 = "((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])$)";
String md30 = "((0[469]|11)-(0[1-9]|[12]\\d|30)$)";
String md_2 = null;
if (isLeapYear) {
md_2 = "(02-(0[1-9]|[12]\\d)$)";
} else {
md_2 = "(02-(0[1-9]|1\\d|2[0-8])$)";
}
regex = year + "(" + md31 + "|" + md30 + "|" + md_2 + ")";
pattern = Pattern.compile(regex);
matcher = pattern.matcher(date);
return matcher.matches();
}
public static boolean isLeapYear(String year) {
return (int) new Integer(year) % 4 == 0;
}
}