Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 十六进制字符串验证错误_Regex - Fatal编程技术网

Regex 十六进制字符串验证错误

Regex 十六进制字符串验证错误,regex,Regex,我试图使用正则表达式验证32个十六进制字符串: ^[0-9A-Fa-f]+$ 但是,错误的字符串 123456789012345678901234567890gg 或 他们被接受了。原因可能是什么?只需在正则表达式中使用一个前瞻,只允许32个字符 ^(?=.{32}$)[0-9A-Fa-f]+$ ^[0-9A-Fa-f]+$允许一个或多个十六进制字符。要限制字符,您需要在前瞻(?=…)内或在设置的括号内指定字符限制{}使用 \A[A-Fa-f0-9]{32}\z 对于所有不支持\z和\

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

^[0-9A-Fa-f]+$
但是,错误的字符串

123456789012345678901234567890gg


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

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

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

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

使用

\A[A-Fa-f0-9]{32}\z
对于所有不支持\z和\A定位的引擎,您可以改为使用:

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

你能发布更完整的代码吗?这个正则表达式在我看来很好。OP的表达式确实“允许一个或多个十六进制字符”,但它被开始和结束锚括起来。为什么他们不工作?他的正则表达式工作正常。而且他只允许32个字符。已经有一个用户发表了关于这个的评论..对不起,你是对的。我想知道是否有一些细微的错误,因为OP声明原始文件确实接受了
gg
结尾字符串。(但不需要前瞻。)“开始”和“结束”的常用锚定是OP使用的:
^
$
。状态
\A
\Z
在所有GREP版本中都不受支持,尤其是Javascript。OP没有指定引擎
^[a-fA-F0-9]{32}$