【发布时间】:2012-11-16 22:31:19
【问题描述】:
我的字符串格式是 M/d/yyyy。这意味着月份和日期数字前面不会有零。 例如:2012 年 9 月 23 日、2012 年 7 月 9 日等
我试过了:
^((((0?[1-9]|[12]\d|3[01]).-/.-/)|((0?[1-9]|[12]\d |30).-/.-/)|((0?[1-9]|1\d|2[0-8])[.-/]0?2.-/)|(29[.- /]0?2.-/))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9 ]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1 [6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6- 9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][ 048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$
但我想这是为 d/M/yyyy 准备的。
有人知道 M/d/yyyy 的表达式吗?
【问题讨论】:
-
该正则表达式应该被取出并拍摄。它充满了错误。正则表达式不是日期验证的正确工具。另见this answer
-
试试
DateTime.Parse,你的代码会更容易阅读。 -
你试过了,你猜它是什么?像这样的正则表达式不能被任何人阅读。如果您使用这种长度的正则表达式,请以可读的方式编写它们,请参阅我的博客文章:Do you write readable regexes?。蒂姆是正确的,正则表达式不是这项工作的正确工具。