首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Regex接受多种日期格式

Regex接受多种日期格式
EN

Stack Overflow用户
提问于 2022-02-28 02:51:55
回答 1查看 73关注 0票数 -2

因此,我需要将日期格式化为: 1/2/2022 01/02/2022 01/2/2022 1/02/20202

因此,基本上,日期格式如下: mm/dd/yyyy /d/yyyy mm/d/yyyy m/dd/yyyy /d/yyyy

尽管我讨厌它,但我得到的文件总是这些日期格式的混合。

我试过这种regex格式

代码语言:javascript
运行
复制
(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/?|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:(?:0?2)(\/?|-|\.)(?:29)\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/?|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$

但它似乎不能得到一些日期。

EN

回答 1

Stack Overflow用户

发布于 2022-03-04 11:16:30

以一种天真的简单方式,这个regex将把字符串与那些日期邮票相匹配。

代码语言:javascript
运行
复制
^(?:[0-3]?\d[\/]){2}\d{4}$

基本上,有一个斜杠的2组1到2位数字,然后是4位数字。

前两个数字将从0到39。

但是这也允许像‘0/32/00’这样的字符串

将这些范围限制在1至31之间的一种更具体的准则:

代码语言:javascript
运行
复制
^(?:(?:0?[1-9]|[12][0-9]|3[01])[\/]){2}[0-9]{4}$

但是这仍然允许像31/31/2000这样的数据存储程序

如果添加了负的前瞻性,则可以避免这种情况。

代码语言:javascript
运行
复制
^(?:(?:0?[1-9]|1[012])|(?:1[3-9]|2[0-9]|3[01])(?![\/](?:1[3-9]|2[0-9]|3[01])))[\/](?:0?[1-9]|[12][0-9]|3[01])[\/][0-9]{4}$

这与“15/15/2000”这样的情况不匹配。

但它不会在乎一个月有多少天。

regex101 这里的测试

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71290162

复制
相关文章

相似问题

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