Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用正则表达式只能有一个部分的序列_Regex_Ember.js - Fatal编程技术网

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

Regex 使用正则表达式只能有一个部分的序列,regex,ember.js,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 (missin


对于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-F]{2}(?::[0-9A-F]{2})*/i

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

或更短更快的
/[0-9A-F]{2}(?:[0-9A-F]{2})*/i
/[0-9A-F]{2}(?:[0-9A-F]{2})*/i效率更高,不是因为非捕获组,但是因为回溯会随着量化部分出现在模式的末尾而减少(没有其他模式在后面生成文本)。但是,这只是最佳实践,在这里不是必须的。@WiktorStribiżew您应该写一本关于regexs的书:-)@maje如果您使用key/i,该模式将忽略小写/大写的差异。@maje:因为
/i
标志:不区分大小写
/[0-9A-F]{2}(?::[0-9A-F]{2})*/i