求可正确匹配AWS EC2实例ID的正则表达式
匹配AWS EC2实例ID的正则表达式修正方案
你的正则表达式问题出在使用了.{7}和.{16},.会匹配任意字符(包括不在a-f/0-9范围内的字符),所以才会错误匹配包含h的无效ID。
正确的正则表达式
- 直观写法:
^i-[a-f0-9]{7}$|^i-[a-f0-9]{16}$ - 简化写法(非捕获组):
^i-[a-f0-9](?:[a-f0-9]{6}|[a-f0-9]{15})$
规则解析
^和$:强制匹配整个字符串,避免部分匹配的情况i-:匹配EC2实例ID的固定前缀[a-f0-9]{7}:匹配前缀后7个合法字符,总长度为8[a-f0-9]{16}:匹配前缀后16个合法字符,总长度为17|:逻辑或运算符,匹配两种合法长度的ID格式
验证结果
- 有效实例ID可正确匹配:
i-ed3a2f7a、i-096e0bec99b504f82、i-0cad9e810fbd12f4f - 无效实例ID会被排除:
e123g12(缺少i-前缀)、i-1fz5645m(包含非法字符m)、i-abcdeffh(包含非法字符h)
内容的提问来源于stack exchange,提问作者Mervin Hemaraju
相关产品推荐
相关产品推荐

