问题描述
我试图过滤掉以特定字符串开头但没有“iframe”子字符串的路径。 这似乎对我有用https://regex101.com/r/rIMFDP/1
^\/csr_and_sustainability_information\/(?!.*iframe)
但在亚马逊上这个正则表达式不起作用https://docs.aws.amazon.com/waf/latest/developerguide/waf-regex-pattern-set-creating.html
说明
AWS WAF 支持 PCRE 库 libpcre 使用的模式语法
我想知道是否可以在该标准内重现我想要的内容
所以我想选择所有以 /csr_and_sustainability_information/ 开头的路线,并且不要在 URL 的后半部分包含 "iframe"
解决方法
你可以使用像 POSIX 兼容的正则表达式
^/csr_and_sustainability_information/([^i]|i(i|f(i|r(i|a(i|mi))))*([^fi]|f([^ir]|r([^ai]|a([^im]|m[^ei])))))*(i(i|f(i|r(i|a(i|mi))))*(f(r?|ram?))?)?$
([^i]|i(i|f(i|r(i|a(i|mi))))*([^fi]|f([^ir]|r([^ai]|a([^im]|m[^ei])))))*(i(i|f(i|r(i|a(i|mi))))*(f(r?|ram?))?)?$
部分确保 iframe
之后没有 /csr_and_sustainability_information/
字符串。