2011-11-24 34 views
2

我想的十六进制数的长度限定为4或8。例如:正则表达式限制通过使用十六进制数长度OR

0x0001是有效的(4个十六进制数字)

0x0001001F是有效的(8十六进制数)

0x00012是无效的(5十六进制数字)

我可以验证一个十六进制数,其中n的长度(n为4或通过使用

Regex.IsMatch("0x0001", "^0x[0-9a-fA-F][{n}$"); 

如何实现这个或运算,比如4或8,而不是4到8?

+0

它不是“数字”而是“十六进制数字”比你的意思(例如'0x00012'是用四个十六进制数字写的单个数字)。 –

回答

3

“或”由|以正则表示。因此,你的正则表达式看起来像

0x([0-9a-fA-F]{4}|[0-9a-fA-F]{8}) 

另一种方法是使用?的最后四位数字可选作。这将导致

0x[0-9a-fA-F]{4}([0-9a-fA-F]{4})?