regex - 名称或 ID 的正则表达式
问题描述
我正在寻找具有以下可能性的正则表达式,其中对于字段它只允许帐户 ID/ARN(以下之一):
- AWS 账户 ID:12 位数字
- AWS 账户 ARN:格式:arn:aws:iam::AWS-account-ID:root。
这里 AWS-Account-ID 是一个 12 位数字 - IAM 用户 ARN:格式:arn:aws:iam::AWS-account-ID:user/user-name-1。
这里 AWS-Account-ID 是一个 12 位数字,用户,user-name-1 是字母数字。
该字段是一个逗号分隔的列表,可以有一个或多个值。
解决方案
- 使用逗号对其进行标记。
- 对于每个令牌:
- 测试它是否为 12 长度,并且仅包含数字(您可以为此使用正则表达式,但实际上没有必要
^\d{12}$
:) - 否则,使用正则表达式进行测试:
^arn:aws:iam::\d{12}:(?:root|user\/[A-Za-z0-9]+)$
- 测试它是否为 12 长度,并且仅包含数字(您可以为此使用正则表达式,但实际上没有必要
你可以正则表达式整个事情......^((?:\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}
。
推荐阅读
- javascript - 如何在 Jest 中模拟 on 函数
- apache-kafka - 除了状态之外,将 kafka-streams 的健康/活跃度与连接计数挂钩吗?
- android - Android File System (Scope Storage) 在使用 Dio Flutter 保存文件时是否存在漏洞?
- python - 未能找到可以处理输入的数据适配器:
, - jupyter - 不能在 Jupyter 中使用 **!** 进行 pip 安装
- javascript - Iframe 内的重定向中断父浏览器历史记录
- c# - 不推荐使用 C# InitialSessionState ImportPSSnapin - 替代方案?
- android - 无法在firebase的远程配置中选择用户属性,它是灰色的
- python - 使用 Bert 模型检查相似度 AttributeError: 'Embeddings' object has no attribute 'embed'
- python - 使用 python cut 函数进行分箱会给相应的值提供错误的标签