[英]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.