将SimpleDateFormat日期格式转换为正则表达式

时间:2011-08-03 14:40:04

标签: java regex

是否有通用的方法将SimpleDateFormat日期格式转换为Java中的正则表达式?

2 个答案:

答案 0 :(得分:3)

对于简单的表达式,你可以做到

String dateFormat = "yyyy/MM/dd HH:mm:ss.SSS";
String regexFormat = dateFormat.replaceAll("[mHsSdMy]", "\\d");

然而,产生一些有效的东西要复杂得多。例如当MM = 03时,dd必须介于01和31之间,但是当MM = 02时,dd必须介于01和28或29之间(取决于年份)

如果你使用MMM,DDD,ZZZ,它会更加复杂并且依赖于语言环境。

答案 1 :(得分:1)

不,没有现成的东西。并且正则表达式不了解日期约束 - 例如GMT是什么,或者是什么/ pm。对于最简单的情况,您可以使用\d{2}-\{2}-\d{4}dd-MM-yyyy),否则请坚持SimpleDateFormat(或joda-time DateTimeFormat