C#Regular-expression用分号分隔检查十六进制值的字符串

时间:2017-12-27 09:05:56

标签: c# regex hex

我想编写一个正则表达式来检查一个字符串表达式是否符合只包含以分号分隔的十六进制值的规则?

A valid string looks like: "0x01;0x02;0X03"

An invalid string may be: "0z01;0x02,003"

那么我应该怎么写这个正则表达式?提前谢谢!

4 个答案:

答案 0 :(得分:1)

这个rexex就是你所需要的。

0(x|X)(\d|[a-fA-F]){1,};

答案 1 :(得分:0)

试试这个

(0[xX][A-Fa-f0-9]+;?)+$

答案 2 :(得分:0)

你可以试试这个:

  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})*$";

答案 3 :(得分:0)

我会使用字符串拆分和正则表达式

的组合
string input = "0x01;0x02;0X03";

Boolean valid = input
 .Split(new char[] { ';' })
 .All(x => Regex.Match(x, "0[xX[0-9a-fA-F]{2}").Success);