使用 ajv 验证 UTC 日期/日期时间,但允许空字符串

And*_*Ooi 5 javascript ajv

我需要验证字符串架构 format:"date"或 format:"date-time"以仅接受ISO 8601但也允许空字符串 "" (应使用所需的架构单独检查 "" 要求)。

{
   "datetime1": {
      "type": "string",
      "format": "date-time",
   }
}
Run Code Online (Sandbox Code Playgroud)

但是,本机 ajv 格式解析器不允许传递空字符串“”。如何使其允许空字符串,并仍然验证 ISO 8601?

我真的必须使用编写自己的格式检查器吗ajv.addFormat()?我也有同样的问题"format": "email",我还需要“”才有效。

注意:我无法修改架构,因此无法添加默认值。

put*_*tra 3

让我们尝试使用 oneOf

date_to: {
  type: 'string',
  oneOf: [
    {
      maxLength: 0
    },
    {
      format: 'date-time',
      minLength: 1
    }
  ]
},
Run Code Online (Sandbox Code Playgroud)

在第一个对象中,它将允许空字符串。在第二个对象中,它将根据您的格式检查输入