I want to allow a string which does not contain ‘&’ character, how it can be done using YANG pattern ?
pattern ‘[a-zA-Z0-9~`@#$%^*()-_=+/>.<,;}{[]]+’; // I might have missed some char which are not in my keyboard.
I want to allow a string which does not contain ‘&’ character, how it can be done using YANG pattern ?
pattern ‘[a-zA-Z0-9~`@#$%^*()-_=+/>.<,;}{[]]+’; // I might have missed some char which are not in my keyboard.
With that method, you need to \
-escape [ and ] (w3c regexps can have “nested” “character classes”), i.e.
pattern '[a-zA-Z0-9~`@#$%^*()-_=+/>.<,;}{\[\]]+';
If you use YANG 1.1, it has a modifier
substatement to pattern
- see https://tools.ietf.org/html/rfc7950#section-9.4.6 - which makes this kind of restriction much easier to specify:
pattern '.*&.*' {
modifier invert-match;
}
Think of grep -v
if you are familiar with the Unix command-line - i.e. the string must not match the pattern in this case.
Thank you for your reply and quick response.
Actually, after posting I realized that there is a much simpler and “safer” solution - just use “longer ranges”:
pattern "[ -%'-~]+";
This will allow all printable ascii characters except & (which is the one between % and '). You can of course tweak it a bit if you don’t actually want to include e.g. space and ’ (they weren’t in your original pattern, but I’m sure they are on your keyboard:-). Just look at an ascii table to see the full order of the characters - you can typically get one with ‘man ascii’ on Unix/Linux.