规则中的匹配运算符主要包含了比较运算符和逻辑运算符两种类型。通过十余种比较运算符、规则间的逻辑运算符,帮助您构建出丰富的规则表达式。
比较运算符
比较运算符用于将请求传入值和表达式中配置的值进行比较。
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
表示请求传入值符合特定的正则表达式。
仅高级版和企业版套餐支持正则表达式。
运算符名称:
与正则表达式匹配
匹配的值类型:
String
使用示例:
(http.host matches "(www|blog).example.com")
not...matches
表示请求传入值不符合特定的正则表达式。
仅高级版和企业版套餐支持正则表达式。
运算符名称:
与正则表达式不匹配
匹配的值类型:
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")
- 本页导读
- 比较运算符
- eq
- ne
- contains
- not...contains
- matches
- not...matches
- in
- not...in
- starts_with
- not starts_with
- ends_with
- not ends_with
- le
- ge
- lt
- gt
- len eq
- len gt
- len lt
- exists
- not exists
- 其他运算符
- lower
- 逻辑运算符
- not
- and
- or