我有String,例如3D-F2-C9-A6-B3
这是我的正则表达式,我已通过在线正则表达式测试人员对其进行了验证:
^([0-9A-Fa-f]{2}[-]){0,}$
问题是,示例字符串3D-F2-C9-A6-B3-4F
无效。我必须在最后添加一个减号,如3D-F2-C9-A6-B3-4F-
如何更改中间的分隔符必须设置但最后没有人的正则表达式?
答案 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
以匹配字符串的结尾)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