【发布时间】:2016-10-13 05:40:48
【问题描述】:
我对 Web 服务中我的一个模型中的某个字段的数据验证有一些要求,我觉得 Regex 非常适合,但我似乎无法编写或找到我正在寻找的内容。
- 字符串必须是 24 个字母数字字符。
- 至少有 8 个字符必须是 Alpha。
- 字符串的最后 5 个字符必须是数字。
[RegularExpression(@"^[\p{L}8\p{N}.(\d{5}5]+$")]
public string VIN { get; set; }
【问题讨论】:
-
试试
@"^(?=.{24}$)(?=(?:\P{L}*\p{L}){8}).*\d{5}$" -
字符串限制也可以用
[StringLength(24)]属性来设置。然后,正则表达式将是[RegularExpression(@"^(?=(?:\P{L}*\p{L}){8}).*\d{5}$")]或[RegularExpression(@"^(?=(?:\P{L}*\p{L}){8})[\p{L}\p{N}]*\p{N}{5}$")] -
如果模式也应该在客户端工作,你需要使用
[StringLength(24)]和[RegularExpression("^(?=(?:[^A-Za-z]*[a-zA-Z]){8})[a-zA-Z0-9]*[0-9]{5}$")]之类的东西(或者如果你需要在模式中使用字符串长度,"^(?=.{24}$)(?=(?:[^A-Za-z]*[a-zA-Z]){8})[a-zA-Z0-9]*[0-9]{5}$") . -
@WiktorStribiżew 我使用了 [StringLength(24, MinimumLength = 24, ErrorMessage = "Invalid Length")] 作为长度。我不确定在单独的注释下还是在正则表达式注释中覆盖长度更好。
-
那么正则表达式呢?我的任何建议对你有用吗?
标签: c# regex data-annotations