JOI 验证字符串失败,并且

Ari*_*ant 6 javascript validation node.js joi

我使用joi进行验证,并尝试通过以下方式验证评论文本区域内容:

const schema = Joi.object().keys({
    firstName: Joi.string().alphanum().min(3).max(30).required(),
    lastName: Joi.string().alphanum().min(3).max(30).required(),
    company: Joi.string().alphanum().min(3).max(30).required(),
    comments: Joi.string().alphanum().min(30).max(1500).required(),
    email: Joi.string().email().required()
});
Run Code Online (Sandbox Code Playgroud)

但是,如果有人输入逗号或句号,验证就会失败。如何将这些例外添加到验证中?

Pat*_*und 8

由于您可能希望允许人们在评论字段中进行任何操作,因此我将简单地省略alphanum评论验证,如下所示:

const schema = Joi.object().keys({
    firstName: Joi.string().alphanum().min(3).max(30).required(),
    lastName: Joi.string().alphanum().min(3).max(30).required(),
    company: Joi.string().alphanum().min(3).max(30).required(),

    // note: no alphanum here
    comments: Joi.string().min(30).max(1500).required(),

    email: Joi.string().email().required()
}); 
Run Code Online (Sandbox Code Playgroud)

如果您确实必须拥有仅包含字母、数字、逗号和句点的注释,您可以求助于使用正则表达式规则:

const schema = Joi.object().keys({
    // ...
    comments: Joi.string().regex(/^[,. a-z0-9]+$/).required(),
    // ...
}); 
Run Code Online (Sandbox Code Playgroud)