我正在尝试通过
pattern
字段验证 Kubernetes CRD 中的字符串,该字段应该是有效的 Unix 路径,其中不包括多个目录,例如 /root
、/boot
、/dev
等。
这个想法是验证以下路径
有效路径:
无效路径:
为了验证,我编写了以下正则表达式:
^(?!/(proc|dev|sys|run|boot|root)\\b)(/[^/ ]*)+/?$
它在 Python 中运行良好,结果如下:
/: True
/home: True
/home/: True
/home/: True
/home/username/: True
/home/username: True
/var: True
home: False
home/username: False
home/username/: False
/root: False
/root/: False
root: False
root/: False
root/.config: False
/proc: False
/boot: False
/dev/: False
但是,在 Kubernetes CRD 模式验证中,使用了 Google RE2 正则表达式风格,它不支持这种类型的否定前瞻并抛出以下错误:
Invalid value: "^(?!/(proc|dev|sys|run|boot|root)\\\\b)(/[^/ ]*)+/?$": must be a valid regular expression, but isn't: error parsing regexp: invalid or unsupported Perl syntax: `(?!`
有什么方法可以将正则表达式转换为这种风格吗?所有帮助将不胜感激。