我有这个正则表达式来验证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的日期!
有人可以帮我找出问题所在吗?
答案 0 :(得分:3)
正则表达式不是日期验证的最佳选择。验证日期的一种非常好的方法是使用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),它也将正确验证。