我需要一个能够匹配AWS EC2示例ID的正则表达式。示例ID具有以下条件:
- 可以是8或17个字符
- 应该从我开始-
- 后面要么是a-f要么是0-9
有效示例ID为:i-ed3a2f7a
或i-096e0bec99b504f82
或i-0cad9e810fbd12f4f
无效示例ID为e123g12
或i-1fz5645m
我能够创建以下正则表达式i-[a-f0-9](?:.{7}|.{16})$
,但它也接受i-abcdeffh
。h
不在a-f
之间
如果有人能帮我,我会很感激
2条答案
按热度按时间kx1ctssn1#
您可以创建一个正则表达式来匹配8个字符的ID值,并在其后添加可选的9个字符:
字符串
这将匹配:
^
:行首i-
:字符i-
[a-f0-9]{8}
:8位十六进制数字(?:[a-f0-9]{9})?
:可选的额外9位十六进制数字$
:行尾Demo on regex101
注意,我们使用行尾和行尾锚来防止匹配ID值之前或之后的其他字符。这个正则表达式只匹配 * 8或17个字符的ID值,而不是12或11或5等。
tjvv9vkg2#
您似乎可以只使用用途:
字符串
查看在线demo
^i-
-起始行锚,后跟“i-”;(?:
-打开非捕获组进行交替;[a-f\d]{8}
-匹配8次给定字符类中的任何字符;|
-或;[a-f\d]{17}
-匹配给定字符类中任意字符的17倍;$
-端线锚。