ルール内のマッチ演算子には、比較演算子と論理演算子が含まれます。ルール間で 10 種類以上の比較演算子と論理演算子を使用して、さまざまなルール式を構築できます。
比較演算子
比較演算子は、リクエスト内の入力値を式で設定された値と比較するために使用されます。
eq
リクエストの入力値がマッチ値と等しいことを示します。
演算子名:
等しい一致値の型:
文字列例:
(http.host eq "www.example.com")
ne
リクエストの入力値がマッチ値と等しくないことを示します。
演算子名:
等しくない一致値の型:
文字列例:
(http.host ne "www.example.com")
contains
リクエストの入力値に特定の文字列が含まれることを示します。
演算子名:
含まれる一致値の型:
文字列例:
(http.host contains "example.com")
not...contains
リクエストの入力値に特定の文字列が含まれないことを示します。
演算子名:
含まれない一致値の型:
文字列例:
(not http.host contains "example.com")
matches
リクエストの入力値が特定の正規表現に準拠していることを示します。PCRE (Perl 互換正規表現) と互換性があります。
正規表現は Premium プランと Enterprise プランでのみサポートされています。
演算子名:
指定された正規表現に一致する一致値の型:
文字列例:
(http.host <b>matches</b> "(www|blog)\.example\.com")
not...matches
リクエストの入力値が特定の正規表現に準拠していないことを示します。PCRE と互換性があります。
正規表現は Premium プランと Enterprise プランでのみサポートされています。
演算子名:
指定された正規表現に一致しない一致値の型:
文字列例:
(not http.host matches "(www|blog)\.example\.com")
in
リクエストの入力値に 1 つ以上のプリセットされた一致値が含まれることを示します。また、 $ を併用してグルーピングを実装することもできます。
演算子名:
次のいずれかの項目を含む一致値の型:
配列例:
(http.host in {"www.example-1.com" "www.example-2.com"})( ip.src in $<LIST_NAME>)
not...in
リクエスト内の入力値に、事前設定されたすべての一致値が含まれていないことを示します。また、$ を併用してグループ化を実装することもできます。
演算子名:
次の項目をいずれも含まない一致値の型:
配列例:
(not http.host in {"www.example-1.com" "www.example-2.com"})(<b data-tag="code">not</b> ip.src <b data-tag="code">in</b> <b data-tag="code">$</b><span style="color:rgb(56, 56, 56)"><LIST_NAME></span>)
starts_with
リクエストの入力値の先頭が、プリセットされたマッチ値と一致することを示します。
演算子名:
で始まる一致値の型:
文字列例:
(starts_with(http.host, "blog"))
not starts_with
リクエストの入力値の先頭が、プリセットされたマッチ値と一致しないことを示します。
演算子名:
で始まらない一致値の型:
文字列例:
(not starts_with(http.host, "blog"))
ends_with
リクエストの入力値の末尾が、プリセットされたマッチ値と一致することを示します。
演算子名:
で終わる一致値の型:
文字列例:
(ends_with(http.host, "cn"))
not ends_with
リクエストの入力値の末尾が、プリセットされたマッチ値と一致しないことを示します。
演算子名:
で終わらない一致値の型:
文字列例:
(not ends_with(http.host, "cn"))
le
リクエストの入力値が、プリセットされたマッチ値以下であることを示します。
演算子名:
以下一致値の型: int
例:
(ip.geoip.asnum le 45104)
ge
リクエストの入力値が、プリセットされたマッチ値以上であることを示します。
演算子名:
以上一致値の型:
int例:
(ip.geoip.asnum <b>ge</b> 45104)
lt
リクエストの入力値が、プリセットされたマッチ値より小さいことを示します。
演算子名:
未満一致値の型:
int例:
(ip.geoip.asnum <b>lt</b> 45104)
gt
リクエストの入力値が、プリセットされたマッチ値より大きいことを示します。
演算子名:
より大きい一致値の型:
int例:
(ip.geoip.asnum gt 45104)
len eq
リクエストの入力値の長さが、プリセットされたマッチ値と等しいことを示します。
演算子名:
長さ等しい一致値の型:
文字列例:
(len(http.request.cookies["session"]) eq 330688)
len gt
リクエストの入力値の長さが、プリセットされたマッチ値より大きいことを示します。
演算子名:
長さより大きい一致値の型:
文字列例:
(<b>len</b>(http.request.cookies["session"]) <b>gt</b> 330688)
len lt
リクエストの入力値の長さが、プリセットされたマッチ値より小さいことを示します。
演算子名:
長さ未満一致値の型:
文字列例:
(<b>len</b>(http.request.cookies["session"]) <b>lt </b>330688)
exists
リクエストにプリセットされた値が存在することを確認します。
演算子名:
exists一致値の型:
文字列例:
(exists(http.request.headers["User-Agent"]))
not exists
リクエストにプリセットされた値が存在しないことを確認します。
演算子名:
存在しない一致値の型:
文字列例:
(not exists(http.request.headers["User-Agent"]))
その他の演算子
lower
リクエスト値の大文字と小文字を区別しないように、入力値の文字を小文字に変換します。
演算子名:
大文字と小文字を区別しない一致値の型:
文字列例:
(lower(http.request.uri))
論理演算子
論理演算子は、複数の式を 複合式に結合するために使用されます。
not
式に対して論理 NOT 演算子を実行します。
演算子名:
論理 NOT例:
not (http.host )
and
リクエストが 2 つ以上の式を満たす必要があることを示します。
演算子名:
論理 AND例:
(http.host eq "www.example.com" and ip.geoip.country eq "CN")
or
リクエストがプリセットされた式のいずれか 1 つを満たすだけでよいことを示します。
演算子名:
論理 OR例:
(http.host eq "www.example.com") or (ip.geoip.country eq "CN")