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

Yang Schema中联合类型及带pattern字符串设置默认值报错问题

问题根本成因

你遇到的是yanglint 0.16.x版本的已知历史bug,和YANG标准本身的规则无关,问题出在默认值的正则匹配逻辑上:

  • 该版本底层依赖的libyang库,解析带pattern约束的字符串类型默认值时,会错误地把默认值字面量外层的双引号也纳入正则匹配范围。比如你写default "x"时,实际参与匹配的内容是带引号的"x",而非你预期的无引号值x,自然无法满足^x$的约束规则。
  • 第一个union类型的案例同理:默认值"-"被校验时,实际参与匹配的是带双引号的"-",既无法匹配uint8的0-99数值范围,也无法匹配^-$的字符串模式,所以校验失败;而数值类型的默认值42没有引号包裹的问题,能正常通过uint8分支的类型校验。

验证方案

你可以临时修改pattern规则做验证:把^x$调整为^"x"$,0.16.x版本的yanglint就会校验通过,进一步证实是引号被错误纳入匹配的问题。

修复方案

  • 优先升级yanglint到1.0及以上版本,该bug在后续的libyang 1.x、2.x版本中已被官方修复,默认值会先剥离外层引号再做类型约束校验,完全符合RFC 7950的YANG标准要求。
  • 如果必须保留0.16.x版本的使用环境,可避免在带pattern的字符串类型、以及包含该类类型的union中设置默认值,改用上层业务逻辑实现默认赋值的需求,绕过校验bug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:15:07