我想用express-validator验证时间,就像这样18:14。当我在验证器中使用isTime时,body("StartTime").isTime().withMessage("Value must be time with HH:MM format")
抛出一个错误,isTime不是一个函数。
是否有其他方法来实现时间验证。
你试过Regex吗?
const { body, validationResult } = require('express-validator');
body('StartTime')
.custom((value) => {
if (!/^([01]d|2[0-3]):([0-5]d)$/.test(value)) {
throw new Error('Value must be time with HH:MM format');
}
return true;
})
这里有一个链接,可以看到如何使用regex模式作为日期格式。
您可以通过编写自定义验证器来验证时间。
const { body } = require("express-validator");
function isTime(input) {
// Validate By TimeStamps
let value = new Date(parseInt(input));
if (isNaN(value)) {
throw new Error("Date object is invalid");
}
// Validate From ISO Time
value = new Date(input);
if (isNaN(value)) {
throw new Error("Date Object Is invalid");
}
return true;
}
body("StartTime").custom(isTime);
你可以稍微修改一下这段代码,使它更适合你的需要。