年/月/日日期格式正则表达式

本文关键字:格式 正则表达式 日期 | 更新日期: 2023-09-27 18:35:16

我想使用正则表达式来匹配这些日期格式,如下所示在 C# 中。

  1. 年/月/日2013/11/12
  2. 年/月/日2013/5/11
  3. 年/月/日 2013/10/5
  4. YYYY/M/D 2013/5/6

我尝试了一些正则表达式,但它们无法匹配 4 种日期格式。如

^(19|20)'d'd[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])

年/月/日日期格式正则表达式

检查一下以了解正则表达式和验证日期的兼容性。 所以我会使用

'd{4}(?:/'d{1,2}){2}

然后在 C# 中执行任何操作来验证匹配项。 虽然可以做到,但您将花费大量时间尝试实现它,尽管该帖子中有一个正则表达式,据说经过一些摆弄可以验证正则表达式中的日期,但它是一个看起来很可怕的正则表达式

尝试

^'d{4}[-/.]'d{1,2}[-/.]'d{1,2}$

大括号{}给出允许的数字。 例如,'d{1,2}表示一位或两位数字。

您可能需要更多才能匹配日期。试试这个:

(19|20)'d'd([-/.])(0?[1-9]|1[012])'2(0?[1-9]|[12][0-9]|3[01])

Ajit 的正则表达式更接近完美,但泄露了以 12 和 16 结尾的闰年的评估。这是完美的更正

((([0-9][0-9][0-9][1-9])|([1-9][0-9][0-9][0-9])|([0-9][1-9][0-9][0-9])|([0-9][0-9][1-9][0-9]))-((0[13578])|(1[02]))-((0[1-9])|([12][0-9])|(3[01])))|((([0-9][0-9][0-9][1-9])|([1-9][0-9][0-9][0-9])|([0-9][1-9][0-9][0-9])|([0-9][0-9][1-9][0-9]))-((0[469])|11)-((0[1-9])|([12][0-9])|(30)))|(((000[48])|([0-9]0-9)|([0-9][1-9][02468][048])|([1-9][0-9][02468][048])|([0-9]0-9)|([0-9][1-9][13579][26])|([1-9][0-9][13579][26]))-02-((0[1-9])|([12][0-9])))|((([0-9][0-9][0-9][1-9])|([1-9][0-9][0-9][0-9])|([0-9][1-9][0-9][0-9])|([0-9][0-9][1-9][0-9]))-02-((0[1-9])|([1][0-9])|([2][0-8])))
((([0-9][0-9][0-9][1-9])|([1-9][0-9][0-9][0-9])|([0-9][1-9][0-9][0-9])|([0-9][0-9][1-9][0-9]))'-((0[13578])|(1[02]))'-((0[1-9])|([12][0-9])|(3[01])))|((([0-9][0-9][0-9][1-9])|([1-9][0-9][0-9][0-9])|([0-9][1-9][0-9][0-9])|([0-9][0-9][1-9][0-9]))'-((0[469])|11)'-((0[1-9])|([12][0-9])|(30)))|(((000[48])|([0-9][0-9](([13579][26])|([2468][048])))|([0-9][1-9][02468][048])|([1-9][0-9][02468][048]))'-02'-((0[1-9])|([12][0-9])))|((([0-9][0-9][0-9][1-9])|([1-9][0-9][0-9][0-9])|([0-9][1-9][0-9][0-9])|([0-9][0-9][1-9][0-9]))'-02'-((0[1-9])|([1][0-9])|([2][0-8])))

这是yyyy-MM-dd格式的正则表达式。

您可以将-替换为'/以进行yyyy/MM/dd...

测试工作完美..

试试这个。这接受所有四种模式

@"'d{4}[- /.]([1-9]|0[1-9]|1[012])[- /.]([1-9]|0[1-9]|[12][0-9]|3[01])"