繁体   English   中英

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

[英]How i can simplify this regular expression

^[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

通常,您可以按不同的级别对重复进行分组。 假设您只需要9个四位数的小写十六进制数字,每个数字之间必须有一个空格,就这么简单:

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

因为您已经知道 [0-9a-f]{4}的含义,所以唯一要解释的是添加的( [0-9a-f]{4}){8} 这只是一个空格,后跟另外四个十六进制数字,两个数字正好重复八次。

如果不是正好是9,则可以简单地调整{8}以提供出现的其他边界,例如{0,12}或零或更多*

您可以使用PCRE中提供的模式递归来减少更多的操作

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM