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

OpenAPI中哪种pattern验证器格式合法?含两种格式示例

OpenAPI中带/边界符的pattern是否合法?

你给出的OpenAPI定义里存在两种pattern写法:

Country:
  pattern: ^(A(D|E|F|G|I|L|M|N|O|R|S|T|Q|U|W|X|Z)|B(A|B|D|E|F|G|H|I|J|L|M|N|O|R|S|T|V|W|Y|Z))$
  type: string
Currency:
  pattern: /^AED|AFN|ALL|AMD$/
  type: string

先给明确结论:带首尾/的写法不符合OpenAPI官方规范,Swagger Editor没报错只是编辑器做了兼容容错,不代表这种写法合法。

详细说明:

  • OpenAPI的pattern字段严格遵循JSON Schema的规范,要求传入的是纯正则表达式字符串——也就是说,不能包含JavaScript里正则字面量的/分隔符。Country字段的写法是完全符合规范的,而Currency字段的/^AED|AFN|ALL|AMD$/属于不规范写法:这里的首尾/会被当成正则表达式的一部分,导致实际匹配时会要求目标字符串必须以/开头、以/结尾,完全偏离了你原本要匹配货币代码的意图。
  • Swagger Editor不报错,是因为它内置了容错处理逻辑,自动帮你剥离了首尾的/。但这种兼容行为不是所有OpenAPI工具都支持的:比如用一些严格的代码生成器、API校验工具时,带/的pattern要么触发格式校验错误,要么生成的代码会把/作为正则的一部分进行匹配,导致业务逻辑出错。
  • 建议统一改成不带/的标准写法,比如把Currency的pattern修改为:
    pattern: ^AED|AFN|ALL|AMD$
    
    这样能确保在所有遵循OpenAPI规范的工具中都能正常工作,避免兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:55:25