十六进制字符串验证错

时间:2014-09-07 12:29:56

标签: regex

我试图使用正则表达式验证32个十六进制字符串:

^[0-9A-Fa-f]+$

然而,错误的字符串如

123456789012345678901234567890gg

1234567890123456789012345678gggg

被接受了。可能是什么原因?

2 个答案:

答案 0 :(得分:1)

使用

\A[A-Fa-f0-9]{32}\z

对于所有引擎不支持\ z和\ A锚点,您可以改为使用:

^[a-fA-F0-9]{32}$

答案 1 :(得分:0)

只需在正则表达式中使用前瞻,只允许32个字符,

^(?=.{32}$)[0-9A-Fa-f]+$

DEMO

^[0-9A-Fa-f]+$允许一个或多个十六进制字符。要限制字符,您需要在前瞻(?=...)或设置括号{}中指定字符数限制。