首页 > 解决方案 > 如何在 C# 中制作特殊的正则表达式?

问题描述

在我的项目中,我想为字符串实现特殊的正则表达式。例如:我需要 HypervisorName,例如“hvm01”的第一个字母,然后是数字。我使用如下正则表达式:

[RegularExpression(@"^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0- 
9\-]*[A-Za-z0-9])$", ErrorMessage = "Virtual Machine name is not formatted correctly")]

但是我仍然可以添加像“test”这样的名称,但在我的情况下,我需要将两个字母放在一起,然后是数字。

标签: c#regex

解决方案


您可以将正则表达式更改为类似的内容^[a-z]{3,}\\d{2,}$并使用RegexOptions.IgnoreCase

这将检查字符串[a-z]{3,}的开头是否有至少三个字母,^后跟最少的 2 个数字\\d{2,}和字符串的结尾$

您可以通过 {} 括号中的第二个选项限制最大字母数,例如[a-z]{3, 10}表示最少 3 个和最多 10 个字母

var r = new Regex("^[a-z]{3,}\\d{2,}$", RegexOptions.IgnoreCase);

matched: hostname123
wrong match: h1
matched: HHH12
wrong match: HHH 12
wrong match: host name
wrong match: host name123

推荐阅读