gpt4 book ai didi

javascript - 使用 javascript 和正则表达式验证日期时间

转载 作者:数据小太阳 更新时间:2023-10-29 05:44:21 27 4
gpt4 key购买 nike

我正在尝试使用有效的日期时间格式验证文本框。我需要检查 24 小时日期时间格式。所以我将以下文本输入到我的文本框 22.05.2013 11:23:22

但它仍然没有正确验证它。我对正则表达式完全陌生。这是到目前为止我已经尝试过的

$('#test1').blur(function(){
var validTime = $(this).val().match(/^[0,1]?\d\/(([0-2]?\d)|([3][01]))\/((199\d)|([2-9]\d{3}))\s[0-2]?[0-9]:[0-5][0-9]?$/);
debugger;
if (!validTime) {
$(this).val('').focus().css('background', '#fdd');
} else {
$(this).css('background', 'transparent');
}
});

这是我的 fiddle

最佳答案

很难用正则表达式验证日期。例如,您如何验证 2 月 29 日? (很难!)

相反,我会使用内置的 Date 对象。它总是会产生一个有效的日期。如果你这样做:

var date = new Date(2010, 1, 30); // 30 feb (doesn't exist!)
// Mar 02 2010

所以你会知道它是无效的。您会看到它溢出到 March,这适用于所有参数。如果您的秒数是 >59,它将溢出到分钟等。

完整解决方案:

var value = "22.05.2013 11:23:22";
// capture all the parts
var matches = value.match(/^(\d{2})\.(\d{2})\.(\d{4}) (\d{2}):(\d{2}):(\d{2})$/);
//alt:
// value.match(/^(\d{2}).(\d{2}).(\d{4}).(\d{2}).(\d{2}).(\d{2})$/);
// also matches 22/05/2013 11:23:22 and 22a0592013,11@23a22
if (matches === null) {
// invalid
} else{
// now lets check the date sanity
var year = parseInt(matches[3], 10);
var month = parseInt(matches[2], 10) - 1; // months are 0-11
var day = parseInt(matches[1], 10);
var hour = parseInt(matches[4], 10);
var minute = parseInt(matches[5], 10);
var second = parseInt(matches[6], 10);
var date = new Date(year, month, day, hour, minute, second);
if (date.getFullYear() !== year
|| date.getMonth() != month
|| date.getDate() !== day
|| date.getHours() !== hour
|| date.getMinutes() !== minute
|| date.getSeconds() !== second
) {
// invalid
} else {
// valid
}

}

JSFiddle:http://jsfiddle.net/Evaqk/117/

关于javascript - 使用 javascript 和正则表达式验证日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20972728/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com