使用正则表达式只能有一个部分的序列

时间:2017-08-08 09:21:01

标签: regex ember.js


对于我在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 :(得分:1)

只需将+(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})是非捕获组,比捕获组更有效。