我有这个正则表达式来验证dd/mm/yyyy
, dd.mm.yyyy
, dd-mm-yyyy
:https://regex101.com/r/kO4rR8/1
和这个来验证hh:mm
:https://regex101.com/r/oF6zB5/1
现在我试图连接上面的表达式来验证dd/mm/yyyy hh:mm
, dd.mm.yyyy hh:mm
, dd-mm-yyyy hh:mm
:https://regex101.com/r/rD9yM8/1
但是我得到一个奇怪的错误…我无法验证从28/mm/yyyy 00:00到31/mm/yyyy 00:00的日期!
有谁能帮我找出问题在哪里吗?Regex不是日期验证的最佳选择。一个很好的方法来验证你的日期是使用moment.js,他们已经建立了支持。
function valiDate(ds) {
let validDates = ["DD/MM/YYYY hh:mm", "DD.MM.YYYY hh:mm", "DD-MM-YYYY hh:mm"];
return validDates.some(d => moment(ds, d).isValid())
}
console.log(valiDate("15.02.1985"));
console.log(valiDate("29.02.1985"));
console.log(valiDate("29.02.1985 00:00"));
上面的将验证带时间和不带时间-如果您只传递日期(15.02.1985),它也将正确验证。
演示