需要在Javascript中验证dd/mm/yy hh:mmtt
我试图验证这个日期。但是我不太确定这是怎么回事 注意-我的应用程序在mm(分钟)和AM/PM之间没有空格需要在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'
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