【发布时间】:2011-01-26 18:09:42
【问题描述】:
我正在尝试编写一些正则表达式来验证 MM/DD/YYYY 日期条目。日期的每一部分都是一个单独的输入文本字段,由“/”分隔,例如:
01 / 16 / 1985
对于 1985 年 1 月 16 日的日期。
我现在有了它,它只允许输入数字,这很容易使用 replace() 和一个简单的正则表达式。顺便说一句,正则表达式不是我的强项,我做的不多,可能每两年一次或两次。
下面是我正在使用的代码以及我的 replace() 下的一些伪正则表达式。我很难将数字输入正则表达式与我试图实现的日期格式正则表达式绑定(在替换()下注释掉)
//MM
$(this).keyup(function() {
//allow only numbers
this.value = this.value.replace(/[^0-9]/g, '');
//(0[1-9]|1[012])
//matching 01 (Jan) to 09 (Sep) to 10 (Oct) to 12 (Dec)
});
//DD
$(this).keyup(function() {
//allow only numbers
this.value = this.value.replace(/[^0-9]/g, '');
//(0[1-9]|[12][0-9]|3[01])
//matching 01-09, 10-19, 20-29, 30-31
//(not worried about picking 31 in February)
});
//YYYY
$(this).keyup(function() {
//allow only numbers
this.value = this.value.replace(/[^0-9]/g, '');
//(\d{4})
//really simple 4 digit, but don't really want 1245 as a valid year
//a range from 1900-current year would be great
//( 1900-newDate().getFullYear() )
//something like this possible?
);
【问题讨论】:
标签: javascript regex date