

截至 2025 年 11 月 7 日，亚马逊 Fraud Detector 不再向新客户开放。要获得与 Amazon Fraud Detector 类似的功能 SageMaker，请浏览亚马逊 AutoGluon、和 AWS WAF。

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

# 规则语言参考


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

## 使用变量


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

```
$example_variable < 100
```

## 使用列表


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

```
$example_list_variable in @list_name
```

## 比较、成员资格和身份运算符


Amazon Fraud Detector 包括以下比较运算符：>、>=、<、<=、\$1 =、==、in、not in

示例如下：

示例：<

```
$variable < 100
```

示例：在，不在

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

示例：！ =

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

示例：==

```
$variable == 1000
```

**操作员表**


| 运算符 | 亚马逊 Fraud Detector 操作员 | 
| --- | --- | 
| 等于  | == | 
| 不等于  | \$1= | 
| Greater than | > | 
| Less than | < | 
| 大于或等于 | >= | 
| 小于或等于 | <= | 
| In | in | 
| And | 和 | 
| Or | 或者 | 
| Not | \$1 | 

## 基础数学


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

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

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

**基本数学表数据**


| 运算符 | 亚马逊 Fraud Detector 操作员 | 
| --- | --- | 
| Plus | \$1 | 
| 减去 | - | 
| Multiply | \$1 | 
| Divide | / | 
| 取模 | % | 

## 正则表达式（正则表达式）


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

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

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

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

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

**正则表达式表**


| 运算符 | 亚马逊 Fraud Detector 示例 | 
| --- | --- | 
| 匹配任何以开头的字符串 | regex\$1match（“^mystring”，\$1variable） | 
| 精确匹配整个字符串 | regex\$1match（“mystring”，\$1variable） | 
| 匹配除换行之外的任何字符 | regex\$1match (” 。 “，\$1变量） | 
| 匹配任意数量的字符，但'mystring'之前的换行符除外 | regex\$1match (”。 \$1mystring”，\$1变量） | 
| 逃避特殊字符 | \$1 | 

## 正在检查缺失值


有时，检查该值是否缺失是有益的。在 Amazon Fraud Detector 中，它用空值表示。你可以使用以下语法来做到这一点：

```
$variable != null
```

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

```
$variable == null
```

## 多种条件


您可以使用`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)
```

## 其他表达式类型


### DateTime 函数



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

### 字符串运算符



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

### 其他



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