

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 CloudFormation 範本中使用常規表達式
<a name="cfn-regexes"></a>

可以在 CloudFormation 範本的多個位置中使用規則表達式 (通常稱為 regexe)，例如建立範本[參數](parameters-section-structure.md)時可用於 `AllowedPattern` 屬性。

CloudFormation 中的所有規則表達式皆符合 Java regex 語法。如需 Java regex 語法及其建構的全面描述，請參閱 [java.util.regex.Pattern](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/regex/Pattern.html)。

如果使用 JSON 語法撰寫 CloudFormation 範本，則必須新增額外的反斜線，以轉義規則表達式中的任何反斜線字元 (\\)。這是因為 JSON 將反斜線解譯為轉義字元，而且您需要將其轉義，以確保其在規則表達式中被視為常值反斜線。

舉例來說，若您要在 JSON 範本的常規表達式中加入 `\d` 以比對數字字元，則必須將該字元編寫為 `\\d`。

在下列範例中，`AllowedPattern` 屬性會指定符合四個連續數字字元 (`\d{4}`) 的規則表達式。不過，由於在 JSON 範本中定義規則表達式，因此需要使用額外的反斜線 (`\\d`) 來轉義反斜線字元。

```
{
  "Parameters": {
    "MyParameter": {
      "Type": "String",
      "AllowedPattern": "\\d{4}"
    }
  }
}
```

如果使用 YAML 語法撰寫 CloudFormation 範本，則必須使用單引號 ('') 括住規則表達式。不需要額外的轉義。

```
Parameters:
  MyParameter:
    Type: String
    AllowedPattern: '\d{4}'
```

**注意**  
CloudFormation 中的規則表達式只能在特定內容中用於驗證，例如 `AllowedPattern`。不支援其作為 CloudFormation 內建函數中的模式比對操作，例如 `Fn::Equals`，其僅執行確切的字串比較，而非模式比對。