

# 在 CloudFormation 模板中使用正则表达式
<a name="cfn-regexes"></a>

您可以在 CloudFormation 模板中的多个位置使用正则表达式（通常称为 Regex），例如，在创建模板[参数](parameters-section-structure.md)时为 `AllowedPattern` 属性指定正则表达式。

CloudFormation 中的所有正则表达式符合 Java 正则表达式语法。有关 Java 正则表达式语法及其构造的全面说明，请参阅 [java.util.regex.Pattern](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/regex/Pattern.html)。

如果您使用 JSON 语法编写 CloudFormation 模板，则对于正则表达式中的任何反斜杠字符（\$1），您必须再添加一个反斜杠进行转义。这是因为 JSON 将反斜杠解释为转义字符，因此您需要对反斜杠进行转义，以确保在正则表达式中将其视为反斜杠字符。

例如，如果要与数字字符匹配的正则表达式包含 `\d`，则需要在 JSON 模板中将其写为 `\\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`）中作为模式匹配操作使用，这些函数仅执行精确字符串比较，不进行模式匹配。