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

Dan*_*elB 5 java regex

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

Pet*_*rey 5

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

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

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

如果您使用 MMM、DDD、ZZZ,则其更加复杂且依赖于区域设置。


Boz*_*zho 3

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