条件操作符

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

数值类操作符

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

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

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

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

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

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

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

字符串类操作符

用于字符串比较,适用于 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-mobileduplicate-req-headerreq-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:不在时间周期内。判断当前时间是否不在指定的周期性时间段内。