使用正则表达式只能包含一部分的序列

Sequences that can have only one part using regex


对于我在 Ember 中的应用程序,我需要从表单中解析一个字符串,这个字符串必须是一个十六进制数,它只能有一个字节,这取决于我代码的另一部分,但我认为是一个正则表达式。
在这里,您可以看到我当前的正则表达式:

/([0-9a-fA-F][0-9a-fA-F]:)+[0-9a-fA-F][0-9a-fA-F]/

有了这个,这是一些例子,

00:11:22:4a -> match
00:a2 -> match (coded on 2 bytes)
00:a -> no match (missing a nibble)
00:00:00:1q -> no match (out of range(hex number))
00 -> no match (abnormal, its an hex number on one bytes)

所以我这里的问题(或者我的问题,随你喜欢)是我不能只有一部分序列。
你能给我一些提示吗?非常感谢。
我确定这是基本知识或其他内容,但我找不到有关我的问题的任何信息。 (加上我不擅长正则表达式)

只需将 +(1 或更多)量词替换为 *(0 或更多):

/([0-9a-fA-F][0-9a-fA-F]:)*[0-9a-fA-F][0-9a-fA-F]/
#                  here __^

您可以缩短为:

/[0-9A-F]{2}(?::[0-9A-F]{2})*/i

其中(?::[0-9A-F]{2})是非捕获组,比捕获组效率更高。