C#Regular Expression来验证日期?

Hca*_*tek 14 c# regex validation date

我正在尝试验证输入到文本框中的日期.文本框上有一个输入掩码,强制输入xx/xx/xxxx.我正在尝试使用正则表达式验证程序来强制输入正确的日期.我根本不熟悉RegEx.我的同事在互联网上找到了这个,但我无法真正说出它在做什么.

这看起来不错吗?似乎过于复杂......

(^((((0[1-9])|([1-2][0-9])|(3[0-1]))|([1-9]))\x2F(((0[1-9])|(1[0-2]))|([1-9]))\x2F(([0-9]{2})|(((19)|([2]([0]{1})))([0-9]{2}))))$)
Run Code Online (Sandbox Code Playgroud)

有没有人知道一个不太复杂的表达,基本上做我需要的东西?

Don*_*nut 36

为什么不使用System.DateTime命名空间中可用的方法之一?您可以使用DateTime.TryParse()(编辑: DateTime.TryParseExact()可能是正确的建议)来完成验证.

  • 并且DateTime.TryParseExact()可能更合适,具体取决于您的确切需求. (4认同)

dtb*_*dtb 24

你可以使用DateTime.TryParseExact:

DateTime dt;

bool isValid = DateTime.TryParseExact(
    "08/30/2009",
    "MM/dd/yyyy",
    CultureInfo.InvariantCulture,
    DateTimeStyles.None,
    out dt);
Run Code Online (Sandbox Code Playgroud)


小智 7

这将是正确的正则表达式,用于日期格式dd/mm/yyyy

^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$
Run Code Online (Sandbox Code Playgroud)

  • 不完全是 - 你需要使初始零可选,否则它将不匹配单个数字日值,如2/12/2012.^(0?[1-9] | [12] [0-9] | 3 [01])[ - /.](0[1-9]|1[012])[- /.](19 | 20)\ d\d $ (4认同)