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

如何使用Joi为校验规则(含正则)添加自定义错误提示?

Joi 正则校验自定义错误提示正确配置方案

你之前的配置不生效有两个核心原因:

  • 错误码匹配错误:object.regex是object类型字段的正则校验错误码,你当前校验的是string类型字段,正则匹配失败对应的错误码为string.pattern.base
  • 键名存在多余空格:你写的"object. regex"中间多了空格,即使错误码正确也无法匹配到对应的提示

正确配置示例

Project: Joi.string()
  .min(3)
  .regex(/^\S+$/)
  .max(25)
  .required()
  .messages({
    // 正则校验不通过的提示
    "string.pattern.base": "项目名称不允许包含空格",
    // 也可以同步配置其他规则的自定义提示
    "string.min": "项目名称长度不能少于3个字符",
    "string.max": "项目名称长度不能超过25个字符",
    "any.required": "项目名称为必填项"
  })

多正则区分提示的场景

如果同一个字段有多个正则校验规则,可以给每个规则单独命名,分别配置提示:

Project: Joi.string()
  // 第二个参数为当前正则规则的自定义名称
  .regex(/^\S+$/, 'noWhiteSpace')
  .regex(/^[a-zA-Z0-9_\u4e00-\u9fa5]+$/, 'validChar')
  .messages({
    "string.pattern.noWhiteSpace": "项目名称不允许包含空格",
    "string.pattern.validChar": "项目名称仅支持中文、英文、数字和下划线"
  })

通用排错技巧

如果不确定对应规则的错误码,可以先不配置自定义消息,打印校验返回的error.details数组,每个错误项的type字段就是需要填写到messages中的键名,直接复制使用即可避免匹配错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:54:03