JOI 验证字符串在 , 和
JOI validation string fails on , and
我使用 joi 进行验证,并尝试通过以下方式验证 comments textarea 内容:
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()
});
但是,如果有人输入逗号或句号,则验证失败。如何将这些例外添加到验证中?
由于您可能希望允许人们在评论字段中进行任何操作,因此我会简单地省略 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()
});
如果您真的非常需要只包含字母、数字、逗号和句点的评论,您可以求助于使用 regex 规则:
const schema = Joi.object().keys({
// ...
comments: Joi.string().regex(/^[,. a-z0-9]+$/).required(),
// ...
});
您可以使用包含字母数字字符和逗号的正则表达式。我不知道你所说的 fullstop 顺便说一句。
是什么意思
Joi.string().regex(/^[a-zA-Z0-9, ]*$/, 'Alphanumerics, space and comma characters').min(3).max(30).required()
请注意,这将仅匹配 a-z、A-Z、0-9 范围内的字符以及 space 和逗号字符。您还需要添加任何其他内容(例如句点字符、方括号、圆括号?)。
来源是Joi API docs。
您可以简单地使用正则表达式语法
comments: Joi.string().regex(/^[a-zA-Z0-9,. ]*$/).min(3).max(30).required()
我使用 joi 进行验证,并尝试通过以下方式验证 comments textarea 内容:
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()
});
但是,如果有人输入逗号或句号,则验证失败。如何将这些例外添加到验证中?
由于您可能希望允许人们在评论字段中进行任何操作,因此我会简单地省略 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()
});
如果您真的非常需要只包含字母、数字、逗号和句点的评论,您可以求助于使用 regex 规则:
const schema = Joi.object().keys({
// ...
comments: Joi.string().regex(/^[,. a-z0-9]+$/).required(),
// ...
});
您可以使用包含字母数字字符和逗号的正则表达式。我不知道你所说的 fullstop 顺便说一句。
是什么意思Joi.string().regex(/^[a-zA-Z0-9, ]*$/, 'Alphanumerics, space and comma characters').min(3).max(30).required()
请注意,这将仅匹配 a-z、A-Z、0-9 范围内的字符以及 space 和逗号字符。您还需要添加任何其他内容(例如句点字符、方括号、圆括号?)。
来源是Joi API docs。
您可以简单地使用正则表达式语法
comments: Joi.string().regex(/^[a-zA-Z0-9,. ]*$/).min(3).max(30).required()