1

我正在尝试为不区分大小写的十六进制数编写一个正则表达式,该十六进制数的长度应匹配 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

但这似乎不符合标准。

你能帮我吗?

谢谢,

4

2 回答 2

5

您的方法基本上是正确的,但是您需要采取^$退出替代方案,因此它们适用于整个正则表达式:

/^(?:[0-9A-F]{8}|[0-9A-F]{12}|[0-9A-F]{32})$/i
于 2013-11-04T16:39:53.837 回答
4

你可以使用这样的东西:

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

如果存在最里面的组,这将匹配 32 个数字,如果存在中间组但不存在最里面的组,则匹配 12 个数字,如果两个内部组都不存在,则匹配 8 个数字。

于 2013-11-04T16:35:32.580 回答