首页 > 解决方案 > 正则表达式 PCRE 模式选择以 /first-url-segment/ 开头的所有路由,并且在 URL 的后半部分不包含“iframe”

问题描述

我试图过滤掉以某个字符串开头但没有“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”

标签: regexamazon-web-servicesweb-application-firewall

解决方案


您可以使用符合 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/


推荐阅读