【发布时间】:2012-01-28 16:37:42
【问题描述】:
我最近一直在寻找一个正则表达式来做一些客户端日期检查,但我找不到一个可以满足以下条件的表达式:
- 范围从 1800 到现在
- 使用闰年执行正确的日期检查
- MM/DD/YYYY 表格
- 无效的日期检查
(这些限制超出了我的范围,是客户的要求,尽管我努力说服他们这不是最佳途径)
当前代码:
$('input').keyup(function()
{
var regex = /^(?:(0[1-9]|1[012])[\/.](0[1-9]|[12][0-9]|3[01])[\/.](18|19|20)[0-9]{2})$/;
$(this).toggleClass('invalid',!regex.test($(this).val()));
});
更新:
我应该注意到,这主要是为了看看这样的正则表达式是否可行(因为在这件事上我不选择使用正则表达式)。我知道用于验证日期的其他(和更好的)选项,但是如前所述 - 这是为了看看是否可以通过正则表达式。
【问题讨论】:
-
为什么要使用正则表达式而不是
Date类? -
2 月 30 日在非闰年有效吗? ;-P
-
正则表达式并不是很多工作的最佳工具。为此的正则表达式必须考虑年份,并手动实现闰年计算,这将使正则表达式的大小增加三倍?
-
一个可以验证包括闰年在内的日期的正则表达式?那会让我印象深刻....
-
是的,这不是一个“有用”的练习。
标签: javascript regex datetime