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



我有这个正则表达式来验证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),它也将正确验证。

演示

相关内容

  • 没有找到相关文章

最新更新