c# - 如何在 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”这样的名称,但在我的情况下,我需要将两个字母放在一起,然后是数字。
解决方案
您可以将正则表达式更改为类似的内容^[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
推荐阅读
- ruby-on-rails - Rails 5:(没有路线匹配[HEAD]“资产”
- prolog - 如何在“SWISH”“Prolog”中添加空格?
- java - Keycloak社交登录休息api
- string - 在单引号字符串中使用双引号会更改转义行为
- superset - 网页中的 Apache 超集仪表板
- python - 删除重复行但保留某些值 Pandas
- c - 将 double 转换为 int 而不四舍五入
- sql - 在bigquery中根据条件合并记录
- docker - 如何制作安全的 nginx-proxy 以在单个服务器中指向不同的路径?
- .net-core - VS for Mac 2017 使用 .NET Core SDK 而不是 Mono 构建