是否有任何工具或库或建议的方法可以将 SimpleDateFormat
类定义的日期模式字符串(例如“dd-mm-yyyy”)一般转换为 Java
正则表达式?
网络上有许多示例(Stack Overflow 中的一些示例)“手动”从特定日期模式派生正则表达式,但显然不存在任何自动化方法的实现(即编写执行转换的解析器)。
SimpleDateFormat
类有一个 compile()
方法,该方法将字符串日期模式转换为字符数组而不是正则表达式,可能是因为它早于引入Java 发行版中的 java.util.regex 包。
最佳答案
没有自动转换的原因是转换只会替换 d
m
和y
与\d
。对于月份和日期名称的情况,是的,正则表达式可能更有用,但它并不真正适合该特定任务;你会有一个像 (Jan|Feb|...|Dec)
这样的组。正则表达式非常适合查找模式,但不擅长验证这些模式中的数据。
如果您真的下定决心要使用正则表达式,例如您可以查找 dd
并将其替换为 (?:[0-2]\d|3[01])
;该正则表达式组不保证指定的月份允许 31 天。
关于java - SimpleDateFormat 模式到 Java 正则表达式的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23702212/