YYYY / MM / DD日期格式正则表达式

时间:2013-10-14 03:10:36

标签: c# regex

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

  1. YYYY / MM / DD 2013/11/12
  2. YYYY / M / DD 2013/5/11
  3. YYYY / MM / D 2013/10/5
  4. YYYY / M / D 2013/5/6
  5. 我尝试了一些正则表达式,但它们无法匹配4种日期格式。 比如

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

6 个答案:

答案 0 :(得分:4)

检查this以了解正则表达式的复杂性和验证日期。所以我会用

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

然后在c#中做任何验证匹配的事情。虽然它可以完成,你将花费大量时间来实现它,虽然在该帖子中有一个正则表达式,据说有点小提琴会验证正则表达式中的日期,但它是一个可怕的正则表达式

答案 1 :(得分:3)

尝试

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

((([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格式的正则表达式。

您可以将-替换为\/的{​​{1}} ...

经过测试的工作完美..

答案 4 :(得分:0)

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])))

答案 5 :(得分:-1)

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

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