需要在Javascript中验证dd/mm/yy hh:mmtt

需要在Javascript中验证dd/mm/yy hh:mmtt,javascript,validation,datetime,date-formatting,Javascript,Validation,Datetime,Date Formatting,我试图验证这个日期。但是我不太确定这是怎么回事 注意-我的应用程序在mm(分钟)和AM/PM之间没有空格 var date = '21/01/13 6:40AM'; var myRegex = /0?[0-31]\d\/0?[0-12]\d\/\d{2} [0-11]\d:[0-59]\d[AP][M]/; if (myRegex.test(date)){ // Ok to proceed } 我尝试了以下方法,将日期和时间分开,即以下组合 var date = '21/01/13'

我试图验证这个日期。但是我不太确定这是怎么回事

注意-我的应用程序在mm(分钟)和AM/PM之间没有空格

var date = '21/01/13 6:40AM';

var myRegex = /0?[0-31]\d\/0?[0-12]\d\/\d{2} [0-11]\d:[0-59]\d[AP][M]/; 


if (myRegex.test(date)){
// Ok to proceed

}
我尝试了以下方法,将日期和时间分开,即以下组合

var date = '21/01/13'

var myRegex = /0?[0-31]\d\/0?[0-12]\d\/d{2}/; 
但是,对于时间段,即上午6:40,我无法用

var myRegex = /[0-11]\d:[0-59]\d[AP][M]/;
你能帮我一下吗。

试试这个:

var regex=/^([0-11]\d):([0-59]\d)\s?(?:AM | PM)?$/i


适用于:“06:40am”

我建议您检查实际有效性,而不仅仅是语法。查看这篇使用
datejs


试试这个。支持闰年。例如:


验证日期和时间字符串的一种方法是创建一个日期对象,并查看各部分是否匹配,例如

function validateDateString(s) {
    var b = s.split(/[\/ :]/g);
    var ap = s.substring(-2).toLowerCase();
    var h = parseInt(b[3], 10) + (ap == 'am'? 0 : 12);
    var min = parseInt(b[4],0);
    var y = +b[2] + (b[2] < 50? 2000 : 1900);
    var d = new Date(y, --b[1], b[0], h, min, 0, 0);
    var apValid = /am|pm/.test(ap);

    // Only need to test two parts of date and hours
    return d.getMonth() == b[1] && d.getDate() == b[0] && d.getHours() == h && apValid;
}

console.log(validateDateString('21/01/13 6:40AM')); // true
函数验证测试环{
var b=s.split(/[\/:]/g);
var ap=s.substring(-2).toLowerCase();
var h=parseInt(b[3],10)+(ap='am'?0:12);
var min=parseInt(b[4],0);
变量y=+b[2]+(b[2]<50-2000:1900);
var d=新日期(y,--b[1],b[0],h,min,0,0);
var apValid=/am | pm/.test(ap);
//只需要测试日期和时间的两部分
返回d.getMonth()==b[1]&&d.getDate()==b[0]&&d.getHours()==h&&apValid;
}
console.log(validatedtestring('21/01/13 6:40AM');//真的

您也可以使用正则表达式,如果您只需要支持符合ES5的浏览器,则可以将该字符串重新格式化为符合ISO 8601的字符串,并将其传递到Date.parse。但这在许多使用中的浏览器中都不起作用。

有两位数的年份,你需要确定1900年到2000年之间的时间间隔。它还允许“18:95AM”。尝试:
/^(0?[0-9]| 1[0-2]):([0-5][0-9])(上午|下午)$/i
validatedtestring('21/01/13 11:40AM')
为我返回
true
function validateDateString(s) {
    var b = s.split(/[\/ :]/g);
    var ap = s.substring(-2).toLowerCase();
    var h = parseInt(b[3], 10) + (ap == 'am'? 0 : 12);
    var min = parseInt(b[4],0);
    var y = +b[2] + (b[2] < 50? 2000 : 1900);
    var d = new Date(y, --b[1], b[0], h, min, 0, 0);
    var apValid = /am|pm/.test(ap);

    // Only need to test two parts of date and hours
    return d.getMonth() == b[1] && d.getDate() == b[0] && d.getHours() == h && apValid;
}

console.log(validateDateString('21/01/13 6:40AM')); // true