正则表达式的名称或ID

时间:2018-06-21 08:18:02

标签: regex amazon-web-services regex-lookarounds

我正在寻找具有以下可能性的正则表达式,其中对于一个字段它仅允许帐户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-1是字母数字。

该字段是一个逗号分隔列表,其中可能包含一个或多个值。

1 个答案:

答案 0 :(得分:1)

  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_]。您还可以提供最小和最大长度,例如最小5,最大15:[A-Za-z0-9]{5,15}