c# - 正则表达式匹配有效的十六进制字符串,但不全是 '0'
问题描述
我正在尝试编写一个Regex
以匹配有效的十六进制字符串但没有全零值。
如何编写一个Regex
匹配有效的十六进制字符串是一个常识。
最简单的是^0[xX][0-9a-fA-F]+$
。
但是,在所有可能的十六进制字符串中,匹配零的字符串应该是无效的。
例如,
0x0
, 0x00
,0x00000
都无效
但
0x01
, 0x001
,0x010
有效
解决方案
您可以使用前瞻来限制匹配:
^0[xX](?!0+$)[0-9a-fA-F]+$
^^^^^^^
在这里,在匹配0x
or之后,如果紧靠右侧的字符串末尾有 1+ 个零0X
,则否定前瞻将导致匹配失败。(?!0+)
查看正则表达式演示
C# 可能的用法示例:
if (Regex.IsMatch(s, @"^0x(?!0+$)[0-9a-f]+$", RegexOptions.IgnoreCase))
{
// Valid
}
推荐阅读
- c# - 如何让页眉跳过第一页
- powershell - inoke-webrequest 中的问题以更新我的 chromecast 固件
- spring - 在Tomcat中部署项目时一次又一次地创建删除的列?
- python - 如何遍历嵌套的子节点
- arrays - 我想在点击反应时为数组添加值
- vba - 如何将电子邮件中的矩阵数据替换为用户表单文本框中的数据?
- highcharts - Highchart yaxis 类别拥挤
- vue.js - 我怎样才能让几个孩子动态路线?
- reactjs - 使用 rollupJs 构建 ES6 模块时 Material-UI ThemeProvider 的挂钩调用无效
- c# - 单击 ASP.NET Core 中的按钮时如何防止验证?