我最近一直在寻找一个正则表达式来做一些客户端日期检查,但我一直无法找到一个可以满足以下条件的表达式:
- 范围从 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()));
});
更新:
我应该指出,这主要是为了看看是否可以使用这样的正则表达式( _因为在这件事上我不选择使用正则表达式_)。我知道用于验证日期的其他( _和更好_)选项,但是如前所述 - 这是为了查看是否可以通过正则表达式。
原文由 Rion Williams 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如其他地方提到的,正则表达式几乎肯定不是你想要的。但是,话虽如此,如果您真的想要一个正则表达式,那么它的构建方式如下:
31天一个月
30天一个月
2 月 1 日至 28 日始终有效
2 月 29 日也适用于闰年
这意味着如果你把它们放在一起就会是这样的:
这个版本有点短,但有点难理解。
这些脚本很长且无法维护。应该清楚这不是一个好主意,但它是可能的。
注意事项:
[\/.]
作为分隔符(8 个位置)