正则表达式无法验证28到31之间的日期

时间:2016-08-16 16:26:27

标签: javascript regex validation date datetime

我有这个正则表达式来验证dd/mm/yyyydd.mm.yyyydd-mm-yyyyhttps://regex101.com/r/kO4rR8/1

这将验证hh:mmhttps://regex101.com/r/oF6zB5/1

现在我正在尝试连接上述表达式以验证dd/mm/yyyy hh:mmdd.mm.yyyy hh:mmdd-mm-yyyy hh:mmhttps://regex101.com/r/rD9yM8/1

但我收到一个奇怪的错误...我无法验证从28 / mm / yyyy 00:00到31 / mm / yyyy 00:00的日期!

有人可以帮我找出问题所在吗?

1 个答案:

答案 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),它也将正确验证。

DEMO