首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Perl中检查有效的日期格式?

如何在Perl中检查有效的日期格式?
EN

Stack Overflow用户
提问于 2009-05-13 10:59:18
回答 8查看 9.9K关注 0票数 3

我从数据库的一个变量中获取了一个日期字段,目前我使用以下代码检查日期是否为"yyyy-mm-dd“格式

代码语言:javascript
运行
复制
if ( $dat =~ /\d{3,}-\d\d-\d\d/ )

我的问题是,有没有更好的方法来实现这一点。

非常感谢

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-05-13 20:31:50

正如其他人所指出的,如果这是一个来自数据库的日期字段,那么它应该是一个定义良好的格式,所以您可以使用一个简单的正则表达式,比如toolkit提供的正则表达式。

但这有一个缺点,即它将接受无效的日期,如2009-02-30。同样,如果您正在处理的日期成功地变成了数据库中的日期类型字段,那么您应该是安全的。

更健壮的方法是使用来自CPAN的许多日期/时间模块中的一个。Date::Manip可能是一个很好的选择,尤其是查看ParseDate()函数。

http://metacpan.org/pod/Date::Manip

票数 4
EN

Stack Overflow用户

发布于 2009-05-13 11:19:40

OWASP Validation Regex Repository版本的日期为美国格式,支持闰年:

^(?:(?:(?:0?13578|102)(/|-|.)31)\1|(?:(?:0?1,3-9|10-2)(/|-|.)(?:29|30)\2))(?:(?:16-9|2-9\d)?\d{2})$|^(?:0?2(/|-|.)29\3(?:(?:(?:16-9|2-9\d)?(?:048|2468|13579)|(?:(?:16|2468|3579)00))))$|^(?:(?:0?1-9)|(?:10-2))(/|-|.)(?:0?1-9|1\d|20-8)\4(?:(?:16-9|2-9\d)?\d{2})$

Regular Expression Library包含一个与其他建议类似的更简单的版本,该版本被翻译为您的问题:

代码语言:javascript
运行
复制
^\d{4}-\d{1,2}-\d{1,2}$
票数 6
EN

Stack Overflow用户

发布于 2009-05-13 11:06:46

怎么样

代码语言:javascript
运行
复制
/\d{2}\d{2}?-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/857308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档