我想编写一个正则表达式来检查字符串表达式是否符合仅包含以分号分隔的十六进制值的规则?
A valid string looks like: "0x01;0x02;0X03"
An invalid string may be: "0z01;0x02,003"
那我应该怎么写这个正则表达式呢?提前致谢!
你可以试试这个:
string source = "0x01;0x02;0X03";
string pattern = @"^(0[xX][0-9A-Fa-f]+)(;0[xX][0-9A-Fa-f]+)*$";
bool matched = Regex.IsMatch(source, pattern);
如果你想要十六进制值表示,比如byte
,即在[0x00..0xFF]
范围内
string pattern = @"^(0[xX][0-9A-Fa-f]{1,2})(;0[xX][0-9A-Fa-f]{1,2})*$";
这个rexex就是你所需要的。
0(x|X)(\d|[a-fA-F]){1,};
试试这个吧
(0[xX][A-Fa-f0-9]+;?)+$
我会使用字符串拆分和正则表达式的组合
string input = "0x01;0x02;0X03";
Boolean valid = input
.Split(new char[] { ';' })
.All(x => Regex.Match(x, "0[xX[0-9a-fA-F]{2}").Success);