

自2025年11月7日起，亚马逊欺诈探测器不再向新客户开放。要了解与亚马逊欺诈检测器类似的功能，请浏览亚马逊 SageMaker AutoGluon、和 AWS WAF。

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

# 规则语言参考
<a name="rule-language-reference"></a>

下一节概述了 Amazon Fraud Detector 中的表达式（即规则编写）功能。

## 使用变量
<a name="using-variables"></a>

您可以使用评估事件类型中定义的任何变量作为表达式的一部分。使用美元符号表示变量：

```
$example_variable < 100
```

## 使用清单
<a name="using-lists"></a>

您可以使用任何与变量类型关联且由条目填充的列表作为规则表达式的一部分。使用美元符号表示列表条目值：

```
$example_list_variable in @list_name
```

## 比较、成员资格和身份运算符
<a name="compare-id-ops"></a>

Amazon Fraud Detector 包含以下比较运算符：>、>=、<、<=、\!=，==，输入，不在

示例如下：

示例：<

```
$variable < 100
```

示例：在，不在

```
$variable in [5, 10, 25, 100]
```

示例：\!=

```
$variable != "US"
```

示例：==

```
$variable == 1000
```

**操作员表 **


| 运算符 | 亚马逊欺诈探测器运营商 | 
| --- | --- | 
| 等于  | == | 
| 不等于  | \!= | 
| Greater than | > | 
| Less than | < | 
| 大于或等于 | >= | 
| 小于或等于 | <= | 
| In | in | 
| And | 和 | 
| Or | 或者 | 
| Not | \! | 

## 基础数学
<a name="basic-math"></a>

可以在表达式中使用基本的数学运算符（例如，\+、-、\*、/）。一个典型的用例是在评估期间需要组合变量。

在下面的规则中，我们将变量`$variable_1`与相加`$variable_2`，并检查总数是否小于 10。

```
$variable_1 + $variable_2 < 10
```

**基本数学表数据 **


| 运算符 | 亚马逊欺诈探测器运营商 | 
| --- | --- | 
| Plus | \+ | 
| 减去 | - | 
| Multiply | \* | 
| Divide | / | 
| 取模 | % | 

## 正则表达式 (regex)
<a name="reg-expressions"></a>

作为表达式的一部分，您可以使用正则表达式来搜索特定的模式。如果你想匹配一个变量的特定字符串或数值，这尤其有用。Amazon Fraud Detector 仅在使用正则表达式时支持匹配（例如，它 True/False 根据提供的字符串是否与正则表达式匹配返回）。亚马逊欺诈探测器的正则表达式支持基于 java 中的 .matches ()（使用 RE2J 正则表达式库）。互联网上有几个有用的网站，可用于测试不同的正则表达式模式。

在下面的第一个示例中，我们首先将变量`email`转换为小写。然后我们检查该模式`@gmail.com`是否在`email`变量中。请注意，第二个句点被转义了，这样我们就可以明确地检查字符串`.com`。

```
regex_match(".*@gmail\.com", lowercase($email))
```

在第二个示例中，我们检查变量是否`phone_number`包含国家/地区代码`+1`，以确定该电话号码是否来自美国。对加号进行了转义，以便我们可以明确检查字符串`+1`。

```
regex_match(".*\+1", $phone_number)
```

**正则表达式表 **


| 运算符 | 亚马逊欺诈探测器示例 | 
| --- | --- | 
| 匹配任何以开头的字符串 | regex\_match (“^mystring”，$变量) | 
| 完全匹配整个字符串 | regex\_match（“我的字符串”，$变量） | 
| 匹配除换行符之外的任何字符 | regex\_match (”。“，$变量） | 
| 匹配任意数量的字符，前面的换行符 “mystring” 除外 | regex\_match (”。\*mystring”，$变量） | 
| 逃避特殊字符 | \\ | 

## 检查缺失值
<a name="missing-variables"></a>

有时检查该值是否缺失是有益的。在亚马逊欺诈检测器中，这由 null 表示。你可以使用以下语法来做到这一点：

```
$variable != null
```

同样，如果你想检查一个值是否不存在，你可以执行以下操作：

```
$variable == null
```

## 多个条件
<a name="multi-cond"></a>

您可以使用和将多个表达式组合`and`在一起`or`。当找到单个真值时，Amazon Fraud Detector 会在`OR`表达式中停止，当找到单个虚假值`AND`时，它会在表达式中停止。

在下面的示例中，我们使用条件检查两个`and`条件。在第一条语句中，我们正在检查变量 1 是否小于 100。在第二个中，我们检查变量 2 是否不是美国。

假定规则使用`and`，则两者都必须为 TRUE，整个条件的计算结果为 TRUE。

```
$variable_1 < 100 and $variable_2 != "US"
```

您可以使用括号对布尔运算进行分组，如下所示：

```
$variable_1 < 100 and $variable_2 != "US" or ($variable_1 * 100.0 > $variable_3)
```

## 其他表达式类型
<a name="expressions"></a>

### DateTime 函数
<a name="date-time"></a>


| 函数 | 说明 | 示例 | 
| --- | --- | --- | 
| 获取当前日期时间 () | 以 ISO8601 UTC 格式提供规则执行的当前时间。你可以使用  getepochmilliseconds (getcurrentdatetime ()) 来执行其他操作   | getcurrentDatetime () == “2023-03-28” T18:34:02Z | 
| isbefore (DateTime1, DateTime 2) | 如果调用者 DateTime 1 在 DateTime 2 之前，则返回布尔值 (True/False) | isbefore (getcurrentdatetime ()，“2019-11-30T01:01:01Z”) == “错误”<br />isbefore (getcurrentdatetime ()，“2050-11-30”) == T01:05:01Z “True” | 
| isafter (DateTime1, DateTime 2) | 如果调用者 DateTime 1 位于 DateTime 2 之后，则返回布尔值 (True/False) | isafter (getcurrentDatetime (), “2019-11-30”) == T01:01:01Z “True”<br />isafter (getcurrentdatetime (), “2050-11-T01:05:01Z 30”) == “假” | 
| getepochmilliseconds () DateTime | 取一个 DateTime 并以纪元毫秒 DateTime 为单位返回。可用于对日期执行数学运算 | getepochmilliseconds (“2019-11-30”) == 1575032461 T01:01:01Z | 

### 字符串运算符
<a name="string-ops"></a>


| 运算符 | 示例 | 
| --- | --- | 
| 将字符串转换为大写 | 大写（$变量） | 
| 将字符串转换为小写 | 小写（$变量） | 

### 其他
<a name="other"></a>


| 运算符 | Comment | 
| --- | --- | 
| 添加评论 | \# 我的评论 | 