匹配运算符

更新时间:2025-03-20 07:11:48

规则中的匹配运算符主要包含了比较运算符和逻辑运算符两种类型。通过十余种比较运算符、规则间的逻辑运算符,帮助您构建出丰富的规则表达式。

比较运算符

比较运算符用于将请求传入值和表达式中配置的值进行比较。

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
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等