条件操作符

操作符定义了变量与值之间的比较方式。根据适用场景,操作符分为以下几类: 用于数值比较,适用于端口号、状态码、长度、计数等数值型变量。 数字 =(==):数值等于。判断变量的数值是否等于指定值。 数字 ≠(!=):数值不等于。判断变量的数值是否不等于指定值。 数字 (>):数值大于。

操作符定义了变量与值之间的比较方式。根据适用场景,操作符分为以下几类:

数值类操作符

用于数值比较,适用于端口号、状态码、长度、计数等数值型变量。

  • 数字 =(==):数值等于。判断变量的数值是否等于指定值。

  • 数字 ≠(!=):数值不等于。判断变量的数值是否不等于指定值。

  • 数字 <(<):数值小于。判断变量的数值是否小于指定值。

  • 数字 ≤(<=):数值小于或等于。判断变量的数值是否小于或等于指定值。

  • 数字 >(>):数值大于。判断变量的数值是否大于指定值。

  • 数字 ≥(>=):数值大于或等于。判断变量的数值是否大于或等于指定值。

字符串类操作符

用于字符串比较,适用于 URI、主机名、请求头、Cookie 等字符串型变量。

  • 字符串 =(eq):字符串等于。判断变量的字符串值是否与指定值完全相同。支持正则表达式(rx)和通配符(wc)模式匹配。

  • 字符串 ≠(ne):字符串不等于。判断变量的字符串值是否与指定值不同。支持正则表达式和通配符模式匹配。

  • 字符串 <(lt):字符串小于。按字典序比较,判断变量值是否小于指定值。

  • 字符串 ≤(le):字符串小于或等于。按字典序比较。

  • 字符串 >(gt):字符串大于。按字典序比较,判断变量值是否大于指定值。

  • 字符串 ≥(ge):字符串大于或等于。按字典序比较。

  • 包含(contains):包含。判断变量值中是否包含指定的子字符串。支持正则表达式和通配符模式匹配。

  • 不包含(!contains):不包含。判断变量值中是否不包含指定的子字符串。支持正则表达式和通配符模式匹配。

  • 包含词(contains-word):包含整词。判断变量值中是否包含指定的完整单词(以单词边界分隔)。

  • 不包含词(!contains-word):不包含整词。判断变量值中是否不包含指定的完整单词。

  • 前缀匹配(prefix):前缀匹配。判断变量值是否以指定字符串开头。支持正则表达式和通配符模式匹配。

  • 前缀不匹配(!prefix):前缀不匹配。判断变量值是否不以指定字符串开头。支持正则表达式和通配符模式匹配。

  • 后缀匹配(suffix):后缀匹配。判断变量值是否以指定字符串结尾。支持正则表达式和通配符模式匹配。

  • 后缀不匹配(!suffix):后缀不匹配。判断变量值是否不以指定字符串结尾。支持正则表达式和通配符模式匹配。

字符串长度类操作符

用于对变量值的字符串长度进行数值比较,适用于字符串型变量。

  • 字符串长度 =(str-len-eq):字符串长度等于。判断变量值的长度是否等于指定数值。

  • 字符串长度 ≠(str-len-ne):字符串长度不等于。判断变量值的长度是否不等于指定数值。

  • 字符串长度 <(str-len-lt):字符串长度小于。判断变量值的长度是否小于指定数值。

  • 字符串长度 ≤(str-len-le):字符串长度小于或等于。判断变量值的长度是否小于或等于指定数值。

  • 字符串长度 >(str-len-gt):字符串长度大于。判断变量值的长度是否大于指定数值。

  • 字符串长度 ≥(str-len-ge):字符串长度大于或等于。判断变量值的长度是否大于或等于指定数值。

IP 地址类操作符

用于 IP 地址和 CIDR 网段匹配,适用于客户端地址、服务器地址、X-Forwarded-For 地址等变量。

  • IP 地址或者 CIDR 匹配(~~):IP 地址或 CIDR 匹配。判断变量中的 IP 地址是否属于指定的网段范围。值的格式为 CIDR 表示法,如 192.168.0.1/24 或 ::1/24。

  • IP 地址或者 CIDR 不匹配(!~~):IP 地址或 CIDR 不匹配。判断变量中的 IP 地址是否不属于指定的网段范围。

布尔类操作符

用于布尔值判断,适用于 ua-is-mobile、duplicate-req-header、req-rejected 等布尔型变量。这类操作符不需要填写右侧的值。

  • 是(is-true):为真。判断变量值是否为 true。

  • 不是(!is-true):为假。判断变量值是否为 false。

空值类操作符

用于判断变量是否有值,适用于可能不存在的请求头、Cookie、参数等变量。这类操作符不需要填写右侧的值。

  • 为空(is-empty):为空。判断变量值是否为空(未定义、空字符串)。

  • 不为空(!is-empty):不为空。判断变量值是否不为空。

时间类操作符

用于时间范围判断,仅适用于时间(date)变量。

  • 在时间间隔内(within-date):在时间区间内。判断当前时间是否在指定的起止时间范围内。需要设置 start_time(开始时间)和 end_time(结束时间)。

  • 不在选择的时间间隔之内(!within-date):不在时间区间内。判断当前时间是否不在指定的起止时间范围内。

  • 在时间段内(within-period):在时间周期内。判断当前时间是否在指定的周期性时间段内。除了起止时间外,还可以设置 weekdays(星期几),其中 1 代表星期一,7 代表星期日。适用于"每周一至周五的 9:00-18:00"这类周期性规则。

  • 不在时间段内(!within-period):不在时间周期内。判断当前时间是否不在指定的周期性时间段内。