像'01-Aug-12'这样的日期格式的正则表达式是什么。
我在 ASP.NET 应用程序中具有 dd-M-y
日期格式,并希望通过 asp.net 正则表达式验证器控件
对其进行验证。
最佳答案
一个非常基本的格式检查是:
\d{2}-[A-Za-z]{3}-\d{2}
亲自看看here .
为了实际验证,我们需要像 @Brijesh Gandhi 建议的那样进行一天检查,然后添加一个完整的月份列表,如下所示:
([12]\d|0[1-9]|3[0-1])-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-\d{2}
如果您想允许像 aug
这样的小写月份,您可以添加不区分大小写修饰符 ?i:
,如下所示...
([12]\d|0[1-9]|3[0-1])-(?i:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-\d{2}
...但这也将允许一个月,例如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}
查看实际的最终版本 here .
请注意,这仍然不会检测到无效日期,例如 2012 年 2 月 30 日。 不接受这些特殊日期的正则表达式将非常长/丑陋。即使使用 Javascript 的 Date.parse(...)
/new Date(...)
也无济于事,因为它很乐意接受上述不存在的日期,并返回 3 月 1 日。因此,为了 100% 正确,您需要自己进行复杂的编码,或者使用像 datejs 这样的库。 .
编辑 1:稍微缩短了 @Brijesh Gandhi 的日期检查,更新了 Regexr 链接。
编辑2:评论正确性。
关于javascript - 日期格式 'dd-M-y'的正则表达式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12108332/