規則中的匹配運算子主要包含了比較子和邏輯運算子兩種類型。通過十餘種比較子、規則間的邏輯運算子,協助您構建出豐富的規則運算式。
比較子
比較子用於將請求傳入值和運算式中配置的值進行比較。
eq
表示請求傳入值與匹配值相等。
運算子名稱:
等於匹配的實值型別:
String使用樣本:
(http.host eq "www.example.com")
ne
表示請求傳入值與匹配值不相等。
運算子名稱:
不等於匹配的實值型別:
String使用樣本:
(http.host ne "www.example.com")
contains
表示請求傳入值中包含特定字串。
運算子名稱:
包含匹配的實值型別:
String使用樣本:
(http.host contains "example.com")
not...contains
表示請求傳入值中不包含特定字串。
運算子名稱:
不包含匹配的實值型別:
String使用樣本:
(not http.host contains "example.com")
matches
表示請求傳入值符合特定的Regex,相容PCRERegex標準。
僅Premium和Enterprise套餐支援Regex。
運算子名稱:
與Regex匹配匹配的實值型別:
String使用樣本:
(http.host matches "(www|blog)\.example\.com")
not...matches
表示請求傳入值不符合特定的Regex,相容PCRERegex標準。
僅Premium和Enterprise套餐支援Regex。
運算子名稱:
與Regex不匹配匹配的實值型別:
String使用樣本:
(not http.host matches "(www|blog)\.example\.com")
in
表示請求傳入值中有一個或多個設定匹配值。同時您可以結合使用$實現分組。
運算子名稱:
等於其中任意一個匹配的實值型別:
Array使用樣本:
(http.host in {"www.example-1.com" "www.example-2.com"})( ip.src in $<LIST_NAME>)
not...in
表示請求傳入值中不包含所有的設定匹配值。同時您可以結合使用$實現分組。
運算子名稱:
不等於其中任意一個匹配的實值型別:
Array使用樣本:
(not http.host in {"www.example-1.com" "www.example-2.com"})(not ip.src in $<LIST_NAME>)
starts_with
表示請求傳入值的開頭符合設定的匹配值。
運算子名稱:
開頭為匹配的實值型別:
String使用樣本:
(starts_with(http.host, "blog"))
not starts_with
表示請求傳入值的開頭不符合設定的匹配值。
運算子名稱:
開頭不為匹配的實值型別:
String使用樣本:
(not starts_with(http.host, "blog"))
ends_with
表示請求傳入值的結尾符合設定的匹配值。
運算子名稱:
結尾為匹配的實值型別:
String使用樣本:
(ends_with(http.host, "cn"))
not ends_with
表示請求傳入值的結尾不符合設定的匹配值。
運算子名稱:
結尾不是匹配的實值型別:
String使用樣本:
(not ends_with(http.host, "cn"))
le
表示請求傳入值小於或等於設定的匹配值。
運算子名稱:
小於或等於匹配的實值型別:int
使用樣本:
(ip.geoip.asnum le 45104)
ge
表示請求傳入值的大於或等於設定的匹配值。
運算子名稱:
大於或等於匹配的實值型別:
int使用樣本:
(ip.geoip.asnum ge 45104)
lt
表示請求傳入值的小於設定的匹配值。
運算子名稱:
小於匹配的實值型別:
int使用樣本:
(ip.geoip.asnum lt 45104)
gt
表示請求傳入值的大於設定的匹配值。
運算子名稱:
大於匹配的實值型別:
int使用樣本:
(ip.geoip.asnum gt 45104)
len eq
表示請求傳入值的長度等於設定的匹配值。
運算子名稱:
長度等於匹配的實值型別:
String使用樣本:
(len(http.request.cookies["session"]) eq 330688)
len gt
表示請求傳入值的長度大於設定的匹配值。
運算子名稱:
長度大於匹配的實值型別:
String使用樣本:
(len(http.request.cookies["session"]) gt 330688)
len lt
表示請求傳入值的長度小於設定的匹配值。
運算子名稱:
長度小於匹配的實值型別:
String使用樣本:
(len(http.request.cookies["session"]) lt 330688)
exists
判斷請求是否存在設定值。
運算子名稱:
存在匹配的實值型別:
String使用樣本:
(exists(http.request.headers["User-Agent"]))
not exists
判斷請求是否不存在設定值。
運算子名稱:
不存在匹配的實值型別:
String使用樣本:
(not exists(http.request.headers["User-Agent"]))
其他運算子
lower
用於不區分請求值的大小寫時,將請求傳入值統一轉換為小寫。
運算子名稱:
不區分大小寫匹配的實值型別:
String使用樣本:
(lower(http.request.uri))
邏輯運算子
邏輯運算子用於將多個運算式組合成一個複合運算式。
not
表示對某個運算式的邏輯取反。
運算子名稱:
邏輯非使用樣本:
not (http.host )
and
表示請求需要同時滿足兩個或多個運算式。
運算子名稱:
邏輯且使用樣本:
(http.host eq "www.example.com" and ip.geoip.country eq "CN")
or
表示請求只需要滿足多個設定的運算式中的一個即可。
運算子名稱:
邏輯或使用樣本:
(http.host eq "www.example.com") or (ip.geoip.country eq "CN")