使用 Joi 验证空字符串

问题描述

使用 Joi 验证字符串时,使用以下架构:

title: Joi.string().required(),

它不会验证如下所示的空字符串:" "。我认为在每个字段上重复 string().trim() 是不正确的。如何验证空字符串?根据{{​​3}},Joi 不应该处理这个吗?

注意空字符串认是不允许的,必须是 使用允许('')启用。不要想太多,只记得空 认情况下,字符串不是有效字符串。另外,不要要求改变它 或争论为什么它没有意义。此主题关闭

解决方法

您可以使用 .regex() 来验证您的字段。

例如,以下模式将验证任何仅包含空格(至少一个)的字符串:

const schema = Joi.object({
    a: Joi.string().regex(/^\s+$/)
})

schema.validate({ a: ' ' }) // valid
schema.validate({ a: '     ' }) // valid
schema.validate({ a: '' }) // invalid,adding .allow('') will validate
schema.validate({ a: '1 ' }) // invalid
schema.validate({ a: '11' }) // invalid