Java 比较正则表达式中的特定日期格式
我有一个正则表达式字符串和另一个从配置文件传递到代码中的字符串Java 比较正则表达式中的特定日期格式,java,regex,Java,Regex,我有一个正则表达式字符串和另一个从配置文件传递到代码中的字符串 a=daily_[0-9]{4}_[0-9]{2}_[0-9]{2} b=YYYY_MM_DD 例如:daily_2015_03_17,daily_2014_02_10 现在我想检查字符串“a”是否具有由字符串“b”指定的有效日期格式 请帮助我如何在Java中实现这一点。您的正则表达式应该是(这不检查闰年): 使用simpleDataFormat对字符串进行解析。字符串“a”可以随时修改,如“今天”[0-9]{4}{0-9]{2}
a=daily_[0-9]{4}_[0-9]{2}_[0-9]{2}
b=YYYY_MM_DD
例如:daily_2015_03_17,daily_2014_02_10
现在我想检查字符串“a”是否具有由字符串“b”指定的有效日期格式
请帮助我如何在Java中实现这一点。您的正则表达式应该是(这不检查闰年):
使用
simpleDataFormat
对字符串进行解析。字符串“a”可以随时修改,如“今天”[0-9]{4}{0-9]{2}{0-9]{2}”或“[0-9]{4}{0-9]{2}{0-9]{2}。唯一不能确定的是字符串“a”中的日期。不使用SimpleDataFormat的原因。那么,是否要验证正则表达式本身?如果a
字符串包含[0-9]{4}{[0-9]{2}{[0-9]{2}
?是。只想比较“a”是否包含由“b”指定的正则表达式格式。
string b = (daily_)(\d{4}_)(((0[13578]|[1][02])_(0[1-9]|[1|2][0-9]|[3][0|1]))|((0[469]|11)_(0[1-9]|[1|2][0-9]|30))|(02_(0[1-9]|[1|2][0-9])));
a="daily_2015_03_30";
boolean res = a.matches(b);
//res says "true" if a match.