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

JSON Schema中能否结合enum与RegEx pattern实现特定值约束?

JSON Schema中enum与pattern的结合方案

没法直接把enum和pattern结合实现你要的需求——JSON Schema里如果同时给字段设置enum和pattern,会要求值同时满足两个条件:必须是枚举列表里的某一项,还得符合正则规则,这显然和你要的“枚举值可加后缀、soda有特殊格式”逻辑不符。

正确的做法是用pattern整合所有规则,比把所有可能值全列出来更简洁易维护,具体方案如下:

最终Schema示例

{
  "category": {
    "type": "string",
    "pattern": "^(water|beer|wine)\\*?$|^soda\\([a-z]{0,2}\\)\\*?$"
  }
}

正则规则拆解

  • ^(water|beer|wine)\*?$:匹配water、beer、wine三个基础值,每个值后面可选择加*后缀
  • ^soda\([a-z]{0,2}\)\*?$:匹配soda()、soda(a)、soda(ab)这类格式,同样可选择加*后缀
  • ^和$确保整个字符串完全匹配,避免出现waterxyz这类部分匹配的无效值

维护说明

如果后续要新增juice这类基础值,只需要在正则的(water|beer|wine)部分里加上|juice就行,不用重构整个规则,灵活性比硬列所有可能值高很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 16:20:20