正则表达式匹配8或12或32十六进制数

时间:2013-11-04 16:33:25

标签: regex

我正在尝试为不区分大小写的十六进制数写一个正则表达式,该数字应该匹配8或12或32的长度。

The regex I have so far is:

/^[0-9A-F]{8}|[0-9A-F]{12}|[0-9A-F]{32}$/i

The pattern I am trying to test against is:
96AFC4ADA8C44A36B0CB1EC28531C3BC

or

870b72a9a020

or

569ac61e

但这似乎与标准不符。

你能帮忙吗?

谢谢,

2 个答案:

答案 0 :(得分:3)

您可以使用以下内容:

/^[0-9A-F]{8}([0-9A-F]{4}([0-9A-F]{20})?)?$/i

如果最里面的组存在,则匹配32位,如果中间组存在但不是最内层组,则匹配12位;如果内部组都不存在,则匹配8位。

答案 1 :(得分:3)

您的方法基本上是正确的,但您需要从备选项中选择^$,因此它们适用于整个正则表达式:

/^(?:[0-9A-F]{8}|[0-9A-F]{12}|[0-9A-F]{32})$/i