什么是日期格式'dd-My'的正则表达式

Tal*_*lha 2 javascript regex asp.net

什么是日期格式的正则表达式 '01-Aug-12'.

我有dd-M-yasp.net应用程序的日期格式,并希望从中验证它asp.net regular expression validator control.

zb2*_*226 5

一个非常基本的格式检查将是:

\d{2}-[A-Za-z]{3}-\d{2} 
Run Code Online (Sandbox Code Playgroud)

看到自己在这里.

要实际验证,我们需要像@Brijesh Gandhi建议的一天检查,然后添加一个完整的月份列表,如下所示:

([12]\d|0[1-9]|3[0-1])-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-\d{2}
Run Code Online (Sandbox Code Playgroud)

如果你想允许小写月份aug,你可以添加?i:像这样的case-insensivity修饰符......

([12]\d|0[1-9]|3[0-1])-(?i:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-\d{2}
Run Code Online (Sandbox Code Playgroud)

...但是这也会允许一个月像aUg- 例如,只允许第一个字符为大写或小写可能是最正确的.

([12]\d|0[1-9]|3[0-1])-([Jj]an|[Ff]eb|[Mn]ar|[Aa]pr|[Mm]ay|[Jj]un|[Jj]ul|[Aa]ug|[Ss]ep|[Oo]ct|[Nn]ov|[Dd]ec)-\d{2}
Run Code Online (Sandbox Code Playgroud)

此处查看此最终版本.

请注意,这仍然无法检测到无效日期,例如30-Feb-12.不接受这些特殊日期的正则表达式将非常长/丑.即使使用Javascript的Date.parse(...)/ new Date(...)也无法检测到它们,因为它乐意接受上述不存在的日期,并返回3月1日.所以要100%正确,你需要自己做复杂的编码,或者使用像datejs这样的库.

编辑1:缩短了@Brijesh Gandhi的日期检查,更新了Regexr链接.

编辑2:备注正确性.