python - 检查日期时间格式在 Python 中是否有效
问题描述
我的问题如下:我希望我的程序的用户可以定义他将使用的日期时间格式'%Y-%m-%d'
,例如'%Y-%m-%d %H:%M:%S'
(有关更多日期时间格式,请参阅https://docs.djangoproject.com/en/3.0/ref/settings /#datetime-input-formats)。
我想验证用户的输入,但我不知道(也许使用正则表达式,但很难想到所有的可能性)。
例如%ASD-%m-%d
不应该被允许,'%Y-%m-%d %H:%M:%S'
是的。
我在 Internet 上看到的所有示例都以特定日期时间格式验证日期时间,但我不这样做,我想验证日期时间格式本身。
解决方案
唯一不是有效日期时间格式的文本是一个 % 紧跟非法字符的文本。法律格式说明符列表可在您提供链接的页面上找到。
LEGAL_SPECS = "aAwdbBmyYHIpMSfzZjUWCxX%GuV"
if re.search(f"(^|[^%])(%%)*%[^{LEGAL_SPECS}]", format): # Invalid
PS 正则表达式正确地报告'%%X'
了%
自身被转义的情况。
推荐阅读
- regex - 口径搜索和替换但保持单个字符
- c++ - C ++对2个数组进行成对排序
- arrays - 如何在数组数组中合并数组?
- javascript - 滚动时触发的过渡
- google-analytics - 现在的活跃用户(Reporting API v4)
- scala - Ineer Join 查询在 scala slick 中的位置
- python - roc 曲线在 matplotlib 中未显示完整图形
- mysql - MySQL 用 max(date) 和 sum 获取 val
- search - 使用 SearchModuleBase 将 Ajax 内容集成到 DNN 搜索索引中的自定义模块中?
- c# - 正则表达式列表中的多个字符串c#