Шаблон Ян не принимает регулярное выражение, содержащее ^ и $

Шаблон Ян не принимает допустимое регулярное выражение, если он содержит знак символа ^ или доллар $.

Приведенный ниже шаблон действителен для валидаторов Regex, но при запуске внутри шаблона шаблона Янга в файле 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:

      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";
}

Также я не уверен, где поднимать проблемы / ошибки с Янгом.

1 ответ

Вот что RFC7950 говорит об утверждении «шаблон»:

Оператор «шаблон», который является необязательным подоператором оператора «тип», принимает в качестве аргумента строку регулярного выражения, как определено в [XSD-TYPES]. Он используется для ограничения встроенного типа «строка» или типов, производных от «строки», значениями, соответствующими шаблону.

Если следовать нормативной ссылке XSD-TYPES, вы в конечном итоге получите:

[XSD-TYPES] Бирон, П. и А. Малхотра, «XML-схема, часть 2: типы данных, второе издание», Рекомендация консорциума World Wide Web REC-xmlschema-2-20041028, октябрь 2004 г., http://www.w3.org/TR/2004/REC-xmlschema-2-20041028.

Поэтому регулярные выражения в операторах "шаблона" YANG определяются спецификациями типа схемы XML (XSD) (и их конкретной версией для YANG 1.0 и 1.1).

В отличие от некоторых других разновидностей регулярных выражений, ^символ в начале «шаблона» YANG или $в конце YANG «шаблона» не интерпретируются как якоря. Вместо этого они интерпретируются буквально как символы, которые должны совпадать. Все выражения «шаблона» неявно привязаны и поэтому соответствуют всему значению.

Вы можете узнать больше о специфике регулярных выражений схемы XML здесь .

Другие вопросы по тегам