Byte Regex带分隔符

时间:2016-11-23 10:47:36

标签: c# .net regex

我有String,例如3D-F2-C9-A6-B3

这是我的正则表达式,我已通过在线正则表达式测试人员对其进行了验证:

^([0-9A-Fa-f]{2}[-]){0,}$

问题是,示例字符串3D-F2-C9-A6-B3-4F无效。我必须在最后添加一个减号,如3D-F2-C9-A6-B3-4F-

如何更改中间的分隔符必须设置但最后没有人的正则表达式?

1 个答案:

答案 0 :(得分:2)

最好的办法是展开一点:

^[0-9A-Fa-f]{2}(?:-[0-9A-Fa-f]{2})*$

请参阅regex demo

<强>详情:

  • ^ - 字符串开头
  • [0-9A-Fa-f]{2} - 定义的集合中的2个字符
  • (?:-[0-9A-Fa-f]{2})* - 零个或多个序列
    • - - 字面连字符
    • [0-9A-Fa-f]{2} - 定义的集合中的2个字符
  • $ - 字符串结尾(更好的选项是\z以匹配字符串的结尾

C# demo

var pattern = @"^[0-9A-Fa-f]{2}(?:-[0-9A-Fa-f]{2})*\z";
var input = "3D-F2-C9-A6-B3";
var matched = Regex.IsMatch(input, pattern); // = > True