繁体   English   中英

杨模式不接受包含 ^ 和 $ 的正则表达式

[英]Yang pattern not accepting regex containing ^ and $

当 Yang 模式包含插入符号 ^ 或美元 $ 时,它不接受有效的正则表达式。

波纹管模式在正则表达式验证器上有效,但是当在 is-types.yang 文件中的杨模式模板内运行时,我的应用程序错误。

但是,当我从表达式的每个部分中删除 ^ 和 $ 时,它可以正常工作。 但是,这现在允许正则表达式接受不需要的值。

我正在尝试匹配 1、11、1/1/1、1/1/1/1。

尝试模式:

^([0-9]{1,3}/[0-9]{1,3}/[0-9]{1,3})$|^([0-9]{1,3}/[0-9]{1,3}/[0-9]{1,3}/[0-9]{1,3})$|^([0-9]{1,2})$

杨类型定义:

typedef interface_number_value {
    type string {
        pattern "([0-9]{1,3}/[0-9]{1,3}/[0-9]{1,3})|([0-9]{1,3}/[0-9]{1,3}/[0-9]{1,3}/[0-9]{1,3})|([0-9]{1,2})" {
            error-message "error";
        }
    } 
    description
        "description";
}

我也不确定在哪里向杨提出问题/错误。

这就是 RFC7950 关于“模式”声明的内容:

“pattern”语句是“type”语句的可选子语句,将正则表达式字符串作为参数,如 [XSD-TYPES] 中定义的那样。 它用于将内置类型“string”或从“string”派生的类型限制为与模式匹配的值。

如果您遵循规范性参考XSD-TYPES ,您最终会得到:

[XSD-TYPES] Biron, P. 和 A. Malhotra,“XML 模式第 2 部分:数据类型第二版”,全球范围 Web 联盟建议 REC-xmlschema-2-20041028,2004 年 10 月, Z80791B3AE7002CB88C24://www876D9FAA8F8。 /TR/2004/REC-xmlschema-2-20041028

因此,YANG“模式”语句中的正则表达式由 XML Schema (XSD) 类型规范(以及针对 YANG 1.0 和 1.1 的特定修订版)定义。

与其他一些正则表达式不同,YANG“模式”开头的^字符或 YANG“模式”结尾的$不会被解释为锚点。 相反,它们被逐字解释为必须匹配的字符。 所有“模式”表达式都是隐式锚定的,因此匹配整个值。

您可以在此处找到有关 XML 模式正则表达式的详细信息的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM