+-
C#-正则表达式以匹配有效的十六进制字符串,但不全为“ 0”
我正在尝试编写一个正则表达式以匹配有效的十六进制字符串,但不包含所有零值.

如何编写一个正则表达式以匹配有效的十六进制字符串是一个常识.

最简单的是^ 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” - 乐贴网