我正在尝试为不区分大小写的十六进制数写一个正则表达式,该数字应该匹配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
但这似乎与标准不符。
你能帮忙吗?
谢谢,
答案 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