

自 2025 年 11 月 7 日起，Amazon Fraud Detector 不再向新客戶開放。對於類似 Amazon Fraud Detector 的功能，請探索 Amazon 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 包含下列比較運算子：＞、>=、＜、<=、！=、=、in、not in

範例如下：

範例：<

```
$variable < 100
```

範例： in， not in

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

範例：！=

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

範例：==

```
$variable == 1000
```

**運算子資料表**


| 運算子 | Amazon Fraud Detector Operator | 
| --- | --- | 
| 等於  | == | 
| 不等於  | \$1= | 
| Greater than | > | 
| Less than | < | 
| 大於或等於 | >= | 
| 小於或等於 | <= | 
| In (入) | in | 
| 及 | 及 | 
| 或 | 或 | 
| Not | \$1 | 

## 基本數學
<a name="basic-math"></a>

您可以在表達式中使用基本數學運算子 （例如 \$1、-、\$1 、/)。典型的使用案例是在評估期間需要合併變數時。

在下面的規則中，我們將`$variable_1`使用 新增變數`$variable_2`，並檢查總計是否小於 10。

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

**基本數學資料表資料**


| 運算子 | Amazon Fraud Detector Operator | 
| --- | --- | 
| Plus | \$1 | 
| 最小值 | - | 
| 乘 | \$1 | 
| 除 | / | 
| 模數 | % | 

## 規則運算式 (regex)
<a name="reg-expressions"></a>

您可以使用 regex 來搜尋特定模式，做為表達式的一部分。如果您想要比對其中一個變數的特定字串或數值，這特別有用。Amazon Fraud Detector 僅在使用規則運算式時支援比對 （例如，它會根據提供的字串是否與規則運算式相符，傳回 True/False)。Amazon Fraud Detector 的常規表達式支援是以 Java 中的 .matches() 為基礎 （使用 RE2J 常規表達式程式庫）。網際網路上有數個實用的網站，可用於測試不同的規則表達式模式。

在下面的第一個範例中，我們首先將變數轉換為`email`小寫。然後，我們會檢查模式是否`@gmail.com`在 `email`變數中。請注意，第二個期間會逸出，以便我們可以明確檢查字串 `.com`。

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

在第二個範例中，我們會檢查變數是否`phone_number`包含國家/地區代碼`+1`，以判斷電話號碼是否來自美國。會逸出加號，以便我們明確檢查字串 `+1`。

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

**Regex 資料表**


| 運算子 | Amazon Fraud Detector 範例 | 
| --- | --- | 
| 比對任何開頭為 的字串 | regex\$1match("^mystring"，\$1variable) | 
| 完全比對整個字串 | regex\$1match("mystring"，\$1variable) | 
| 比對新行以外的任何字元 | regex\$1match("."，\$1variable) | 
| 除了「mystring」前的新行之外，符合任意數量的字元 | regex\$1match(".\$1mystring"， \$1variable) | 
| 逸出特殊字元 | \$1 | 

## 檢查是否有遺失值
<a name="missing-variables"></a>

有時檢查值是否遺失會有幫助。在 Amazon Fraud Detector 中，這會以 null 表示。您可以使用下列語法來執行此操作：

```
$variable != null
```

同樣地，如果您想要檢查值是否存在，您可以執行下列動作：

```
$variable == null
```

## 多個條件
<a name="multi-cond"></a>

您可以使用 `and`和 將多個表達式結合在一起`or`。找到單一 true 值時，Amazon Fraud Detector 會在`OR`表達式中停止，並在找到單一 false 值`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>


| 函式 | Description | 範例 | 
| --- | --- | --- | 
| getcurrentdatetime() | 以 ISO8601 UTC 格式提供規則執行的目前時間。您可以使用 getepochmilliseconds(getcurrentdatetime()) 來執行其他操作  | getcurrentdatetime() == "2023-03-28T18：34：02Z" | 
| isbefore(DateTime1、DateTime2) | 如果發起人 DateTime1 早於 DateTime2，則傳回布林值 (True/False) | isbefore(getcurrentdatetime()， "2019-11-30T01：01：01Z") == "False" isbefore(getcurrentdatetime()， "2050-11-30T01：05：01Z") == "True" | 
| isafter(DateTime1，DateTime2) | 如果發起人 DateTime1 晚於 DateTime2，則傳回布林值 (True/False) | isafter(getcurrentdatetime()， "2019-11-30T01：01：01Z") == "True" isafter(getcurrentdatetime()， "2050-11-30T01：05：01Z") == "False" | 
| getepochmilliseconds(DateTime) | 採用 DateTime，並以 epoch 毫秒傳回該 DateTime。適用於在日期執行數學操作 | getepochmilliseconds("2019-11-30T01：01：01Z") == 1575032461 | 

### 字串運算子
<a name="string-ops"></a>


| 運算子 | 範例 | 
| --- | --- | 
| 將字串轉換為大寫 | uppercase(\$1variable) | 
| 將字串轉換為小寫 | 小寫 (\$1variable) | 

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


| 運算子 | Comment | 
| --- | --- | 
|  新增註解  |  \$1 我的評論  | 