首页 > 解决方案 > 名称或 ID 的正则表达式

问题描述

我正在寻找具有以下可能性的正则表达式,其中对于字段它只允许帐户 ID/ARN(以下之一):

  1. AWS 账户 ID:12 位数字
  2. AWS 账户 ARN:格式:arn:aws:iam::AWS-account-ID:root。
    这里 AWS-Account-ID 是一个 12 位数字
  3. IAM 用户 ARN:格式:arn:aws:iam::AWS-account-ID:user/user-name-1。
    这里 AWS-Account-ID 是一个 12 位数字,用户,user-name-1 是字母数字。

该字段是一个逗号分隔的列表,可以有一个或多个值。

标签: regexamazon-web-servicesregex-lookarounds

解决方案


  1. 使用逗号对其进行标记。
  2. 对于每个令牌:
    1. 测试它是否为 12 长度,并且仅包含数字(您可以为此使用正则表达式,但实际上没有必要^\d{12}$:)
    2. 否则,使用正则表达式进行测试:^arn:aws:iam::\d{12}:(?:root|user\/[A-Za-z0-9]+)$

你可以正则表达式整个事情......^((?:\d{12}|arn:aws:iam::\d{12}:(?:root|user\/[A-Za-z0-9]+)),?\s*)*

显然,您也可以在正则表达式中使用变量而不是替换硬代码。

对于用户名,将任何其他合法字符添加到字符类中[A-Za-z0-9],例如下划线:[A-Za-z0-9_]. 您还可以提供最小和最大长度,例如 min 5, max 15: [A-Za-z0-9]{5,15}


推荐阅读