我如何简化这个正则表达式

时间:2015-10-09 01:47:35

标签: regex

^[0-9a-f]{4} [0-9a-f]{4} [0-9a-f]{4} [0-9a-f]{4} [0-9a-f]{4} [0-9a-f]{4} [0-9a-f]{4} [0-9a-f]{4} [0-9a-f]{4}$

这是验证输入字符串的格式,如:

a28a 3bef 1b2b 4b49 2e3d 3867 8753 a024 0000

2 个答案:

答案 0 :(得分:4)

您通常可以在不同级别对重复进行分组。假设您只需要九个四位数的小写十六进制数字,每个数字之间只有一个空格,那就像下面这样简单:

^[0-9a-f]{4}( [0-9a-f]{4}){8}$

由于您已经知道有关[0-9a-f]{4}的含义,因此唯一需要解释的是添加的( [0-9a-f]{4}){8}。这只是一个空格,后跟另外四个十六进制数字,其中两个都重复了八次。

如果它正好是9,你可以简单地调整{8}以提供事件的其他界限,例如像{0,12}或零或 - 的范围更多*

答案 1 :(得分:1)

通过使用PCRE

中可用的模式递归,可以减少更多
^([0-9a-f]{4})(?: (?1)){8}$

(?1)表示与第1组相同的模式(即[0-9a-f]{4}