Regex 日期正则表达式似乎无法获得强日期正则表达式
我研究日期正则表达式已经有一段时间了,但每当我提出一个正则表达式时,似乎总是有一个问题 表达方式如下Regex 日期正则表达式似乎无法获得强日期正则表达式,regex,Regex,我研究日期正则表达式已经有一段时间了,但每当我提出一个正则表达式时,似乎总是有一个问题 表达方式如下 ^(0?[1-9]|[12][0-9]|3[01]) 关于DDMMM格式的日期正则表达式是什么样子的,有什么帮助吗?我从某处阅读了下面的示例 假设我们想匹配mm/dd/yy格式的日期,但我们想让用户选择日期分隔符。 快速解决方案是\d\d\d\d\d。一开始看起来不错 \d\d[-/.]\d\d[-/.]\d\d是一个更好的解决方案。这个正则表达式允许破折号、空格、点和正斜杠作为日期分隔符 这
^(0?[1-9]|[12][0-9]|3[01])
关于DDMMM格式的日期正则表达式是什么样子的,有什么帮助吗?我从某处阅读了下面的示例 假设我们想匹配mm/dd/yy格式的日期,但我们想让用户选择日期分隔符。 快速解决方案是
\d\d\d\d\d
。一开始看起来不错
\d\d[-/.]\d\d[-/.]\d\d
是一个更好的解决方案。这个正则表达式允许破折号、空格、点和正斜杠作为日期分隔符
这个正则表达式还远远不够完美。它匹配99/99/99作为有效日期
[0-1]\d[-/.][0-3]\d[-/.]\d\d
领先了一步,尽管它仍将与1999年9月39日相匹配
还是比较好的,
[0-1][1-9][- /. ]?(0[1-9]|[12][0-9]|3[01])[- /.]?(18|19|20|21)\d\d$
我提出了这个,很长,但它涵盖了大多数情况,除了闰年:
^((0[1-9]|[12][0-8])[/.-](0[1-9]| 1[0-2]))((29 | 30)[/.-](0[13-9]| 1[0-2])|(31[/.-](0[13578]| 1[02])$
- 每个月有28天(您必须在代码中使用某种函数检查闰年)
#天:01至28(0?[1-9]|[12][0-8])
#分隔符[/.-]
#月份:1至12(0[1-9]| 1[0-2])
- 除2月外,每个月有29天和30天:
#天:29或30(29 | 30)
#分隔符[/.-]
#月份:1、3到12(0[13-9]| 1[0-2])
- 只有一些月份有31天:(1月、3月、5月、7月、8月、10月和12月)
#天数:3131
#分隔符[/.-]
#月份:01,03,05,07,08,10,12(0[13578]| 1[02])