

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 数值匹配
<a name="numeric-value-matching"></a>

通过将数值与消息属性值或消息正文属性值进行匹配来筛选消息。在 JSON 策略中，不会用双引号将字符串值引起来。您可以使用以下数值运算进行筛选。

**注意**  
前缀仅支持*字符串* 匹配。

## 精确匹配
<a name="numeric-exact-matching"></a>

当策略属性值包含 `numeric` 关键字和 `=` 运算符时，它将匹配具有相同名称和相同数值的任何消息属性值或消息正文属性值。

请考虑以下策略属性：

```
"price_usd": [{"numeric": ["=",301.5]}]
```

它匹配以下任一消息属性：

```
"price_usd": {"Type": "Number", "Value": 301.5}
```

```
"price_usd": {"Type": "Number", "Value": 3.015e2}
```

它还匹配以下任一消息正文：

```
{
   "price_usd": 301.5
}
```

```
{
   "price_usd": 3.015e2
}
```

## Anything-but 匹配
<a name="numeric-anything-but-matching"></a>

当策略属性值包含关键字 `anything-but` 时，它会匹配*不* 包含任何策略属性值的任何消息属性值或消息正文属性值。

请考虑以下策略属性：

```
"price": [{"anything-but": [100, 500]}]
```

它匹配以下任一消息属性：

```
"price": {"Type": "Number", "Value": 101}
```

```
"price": {"Type": "Number", "Value": 100.1}
```

它还匹配以下任一消息正文：

```
{
   "price": 101
}
```

```
{
   "price": 100.1
}
```

此外，它还匹配以下消息属性（因为它包含的值*不是* `100` 或 `500`）：

```
"price": {"Type": "Number.Array", "Value": "[100, 50]"}
```

它还匹配以下消息正文（因为它包含的值*不是* `100` 或 `500`）：

```
{
   "price": [100, 50]
}
```

但是，它不匹配以下消息属性：

```
"price": {"Type": "Number", "Value": 100}
```

它与以下消息正文也不匹配：

```
{
   "price": 100
}
```

## 值范围匹配
<a name="numeric-value-range-matching"></a>

除了 `=` 运算符之外，数值策略属性还可以包含以下运算符：`<`、`<=`、`>` 和 `>=`。

请考虑以下策略属性：

```
"price_usd": [{"numeric": ["<", 0]}]
```

它匹配任何具有负数值的消息属性或消息正文属性。

考虑另一个消息属性：

```
"price_usd": [{"numeric": [">", 0, "<=", 150]}]
```

它匹配任何具有正数（最大为 150）的消息属性或消息正文属性。