Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有前瞻性的AWS WAF Regexp问题_Regex_Amazon Web Services_Amazon Waf - Fatal编程技术网

具有前瞻性的AWS WAF Regexp问题

具有前瞻性的AWS WAF Regexp问题,regex,amazon-web-services,amazon-waf,Regex,Amazon Web Services,Amazon Waf,我正在使用负前瞻为AWS WAF构建一个regexp joe(?!(ann|jen)) 但是,我从WAF控制台返回了以下错误 WAFInvalidParameterException: Error reason: The parameter contains formatting that is not valid., field: REGEX_PATTERN_SET, parameter: joe(?!(ann|jen)) AWS WAF似乎不支持这种regexp。我找到了这个博客 有没

我正在使用负前瞻为AWS WAF构建一个regexp

joe(?!(ann|jen))
但是,我从WAF控制台返回了以下错误

WAFInvalidParameterException: Error reason: The parameter contains formatting that is not valid., field: REGEX_PATTERN_SET, parameter: joe(?!(ann|jen))
AWS WAF似乎不支持这种regexp。我找到了这个博客


有没有人有类似的问题?您能分享一下如何修复它吗?

由于不支持负面外观头部,我将我的表达式分解为几个表达式,涵盖所有情况。WAF允许您指定多个表达式。它使用逻辑OR匹配,因此只有其中一个必须匹配。利用问题中的例子,解决方案可以是

joe[^aj]
joea[^n]
joean[^n]
joej[^e]
joeje[^n]
joe
匹配,除非他后面跟着
a
j
。那么他是可疑的,所以我们继续下一条规则。如果
a
后面跟一个
n
,我们仍然怀疑,因此我们继续下一条规则。我们重复这个过程,直到我们确定整个单词是
joeann
还是
joejen


我的特定用例是URI匹配。我想限制对整个目录的请求,除了一个子目录(及其所有子目录)

假设我们想限制
/my/dir
,但不想限制
/my/dir/safe
中的任何内容。我们会这样做的

^/my/dir/?$
^/my/dir/[^s]
^/my/dir/s[^a]
^/my/dir/sa[^f]
^/my/dir/saf[^e]
^/my/dir/safe[^/]
我们遵循相同的过程按顺序识别每个字母

“你不能从S开始。好吧,你可以从S开始,但你不能也有A。好吧,好吧,我让它滑动,但你不能也有F。好吧,好吧,你的持久性,但是…”


请注意,我们必须为尾部斜杠包含一条规则
/
。这包括
/my/dir/safe/
和所有子目录(如
/my/dir/safe/which)中的可选斜杠?!(安仁)
没有前瞻性<代码>e是可选的,带有
量词。你有乔(?安|珍)吗?有。我有这个乔(?!安·珍)。感谢您更正此文档。他们说引擎是PCRE,但似乎只有POSIX函数作为任意零宽度断言启用,基本上不支持所有酷特性。你确定需要一个具有负前瞻性的正则表达式吗?像
这样的东西怎么样?比如像“%joe%”这样的col和不像“%joeann%”的col和不像“%joejen%”的col。
?@WiktorStribiżew WAF在任何地方都不使用SQL语法,而且它们不允许您将消极规则和积极规则结合起来。您可以匹配所有规则,也可以不匹配任何规则。