我正在尝试编写一个 Regex
来匹配有效的十六进制字符串,但不包含全零值。
如何编写 Regex
来匹配有效的十六进制字符串是常识。
最简单的是^0[xX][0-9a-fA-F]+$
。
但是,在所有可能的十六进制字符串中,匹配零的应该是无效的。
例如,
0x0
、0x00
、0x00000
均无效
但是
0x01
, 0x001
, 0x010
有效
最佳答案
您可以使用前瞻来限制匹配:
^0[xX](?!0+$)[0-9a-fA-F]+$
^^^^^^^
此处,在匹配 0x
或 0X
后,如果有 1+ 个零,则 (?!0+)
否定先行匹配失败到紧靠右边的字符串末尾。
参见 regex demo
C# 可能的用法示例:
if (Regex.IsMatch(s, @"^0x(?!0+$)[0-9a-f]+$", RegexOptions.IgnoreCase))
{
// Valid
}
关于c# - 正则表达式匹配有效的十六进制字符串但不是全部 '0',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52976241/