繁体   English   中英

正则表达式匹配 aws arn

[英]Regex to match an aws arn

我正在尝试验证连接实例的 aws arn,但我坚持创建正确的正则表达式。

下面是我要验证的字符串。

arn:aws:connect:us-west-2:123456789011:instance/0533yu22-d4cb-410a-81da-6c9hjhjucec4b9

我想创建一个正则表达式来检查以下内容。

arn:aws:connect:<region_name>:<12 digit account id>:instance/<an alphanumeric instance id>

有人可以帮忙吗。

在下面试过

^arn:aws:connect:\S+:\d+:instance\/\S+\/queue\/\S+$

您需要一些捕获组来促进这一点。 在这里,为了便于理解,我还使用了命名捕获组

 const string = "arn:aws:connect:us-west-2:123456789011:instance/0533yu22-d4cb-410a-81da-6c9hjhjucec4b9"; // Regex broken down into parts const parts = [ 'arn:aws:connect:', '(?<region_name>[^:]+?)', // group 1 ':', '(?<account_id>\\d{12})', // group 2 ':instance\\/', '(?<instance_id>[A-z0-9\\-]+?)', // group 3 '$' ]; // Joined parts into regex expression const regex = new RegExp(parts.join('')); // Execute query and assign group values to variables const { region_name, account_id, instance_id } = regex.exec(string).groups; console.log("region_name:", region_name); console.log("account_id:", account_id); console.log("instance_id:", instance_id);

您的示例字符串中没有/queue/ substring ,并且\S+匹配任何无空格字符,并将导致回溯匹配模式的 rest。

您可以将您的模式更新为^arn:aws:connect:\S+:\d+:instance\/\S+$但根据您要检查的内容,这会不太精确。

更精确的模式可能是:

^arn:aws:connect:\w+(?:-\w+)+:\d{12}:instance\/[A-Za-z0-9]+(?:-[A-Za-z0-9]+)+$
  • ^字符串开头
  • arn:aws:connect:逐字匹配
  • \w+(?:-\w+)+:匹配 1+ 个单词字符并重复匹配-和 1+ 个单词字符,然后匹配:
  • \d{12}:匹配 12 位数字和:
  • instance\/匹配instance/
  • [A-Za-z0-9]+(?:-[A-Za-z0-9]+)+匹配 1+ 个字母数字并重复 1+ 次-和 1+ 个字母数字
  • $字符串结尾

正则表达式演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM