如何在YANG中限制字符串为指定允许的字符串集合?
YANG约束字符串为指定集合的两种方法
当然存在对应的YANG语句实现这个需求,这里有两种常用方案,推荐优先使用第一种:
1. 使用enumeration类型(推荐)
enumeration是YANG专门用来定义离散取值集合的类型,语义清晰且工具支持性更好,直接把允许的字符串定义为枚举值即可:
leaf product { type enumeration { enum apple { description "苹果类产品"; } enum orange { description "橙子类产品"; } enum strawberry { description "草莓类产品"; } } }
这种方式的优势在于,任何支持YANG的工具都能直接识别出允许的取值选项,不仅能严格校验输入,还能给用户提供明确的取值提示,完全适配这类固定集合约束的场景。
2. 使用pattern语句匹配正则
如果一定要用pattern,可以通过精确匹配的正则表达式来约束,注意要加上^和$限定字符串首尾,避免出现部分匹配的情况:
leaf product { type string { pattern "^(apple|orange|strawberry)$"; } }
这个正则的含义是:输入的字符串必须完全等于apple、orange或strawberry中的一个,不允许出现前缀、后缀或其他额外字符。
内容的提问来源于stack exchange,提问作者AngelosFr
相关产品推荐
相关产品推荐

