2013-11-04 101 views
0

我想寫一個大小寫不敏感的十六進制數的正則表達式,它應該匹配8或12或32的長度。正則表達式匹配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

的可能重複[正則表達式正好n或m次] (http://stackoverflow.com/questions/13874777/regex-exactly-n-or-m-times) – HamZa

回答

3

你可以使用這樣的:如果中間組存在但不是內

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

這將匹配32位,如果最內層的基團存在,12位如果兩個內部組均不存在,則爲8位。

+0

這種情況是不敏感的? – Jake

+0

@Jake它是如果你包含'我'國旗(對不起,我忽略了原來的版本)。 –

3

你的方法基本上是正確的,但你需要採取^$出替代品,所以它們適用於正則表達式作爲一個整體:

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

+1,畢竟是一個很常見的錯誤......) – sp00m

相關問題