You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Joi模块中定义整数变量最小与最大长度的方法是什么?

关于Joi中整数验证的误区与正确用法

嘿,我注意到你写的代码里有个常见小误区——Joi的number()类型并不支持minlength()和maxlength()方法哦!这两个方法是专门给string()类型用来限制字符串长度的,用在数字类型上会直接报错~

下面根据你的需求分两种情况给出正确的验证方式:

情况1:限制整数的数值大小范围

如果你的需求是让num必须是一个12位的整数数值(也就是数值在100000000000到999999999999之间),应该用min()和max()方法,同时加上.integer()确保是整数:

const schema = joi.object().keys({
  num: joi.number().integer().min(100000000000).max(999999999999)
});

情况2:限制数字的位数(含前导0)

如果你的需求是让num必须是12位数字格式(比如允许前导0,像001234567890这种),那更适合把它当作字符串来验证,因为数值类型会自动忽略前导0。这时可以用string()配合length()和numeric()方法:

const schema = joi.object().keys({
  num: joi.string().length(12).numeric()
});
// 或者用正则更精确地限制为纯数字:
const schema = joi.object().keys({
  num: joi.string().minlength(12).maxlength(12).pattern(/^[0-9]+$/)
});

简单总结一下:

  • 验证数值大小:用number().integer().min(最小值).max(最大值)
  • 验证数字位数/格式:用string().length(固定长度).numeric()

内容的提问来源于stack exchange,提问作者Aishwary joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:30:45