是否有通用的方法将SimpleDateFormat日期格式转换为Java中的正则表达式?
答案 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
)