DataAnnotations 验证将“@”添加到 RegularExpression

DataAnnotations validation adding `@` to RegularExpression

如何添加 accept @ 以及下面的 RegularExpression?

[StringLength(250)]
[RegularExpression(@"[A-Za-z0-9][A-Za-z0-9\-\.]*|^$", 
ErrorMessage = "DomainName may only contain letters (a-z), digits (0-9), hypens (-) and dots (.), and must start with a letter or digit")]
public string DomainName{ get; set; }

使用

^([A-Za-z0-9][A-Za-z0-9@.-]*)?$

regex demo

这是正则表达式分解:

  • ^ - 字符串开头
  • ([A-Za-z0-9][A-Za-z0-9@.-]*)? - 1 或 0(由于 ? 贪婪量词)出现...
    • [A-Za-z0-9] - 一个 ASCII 字母后跟...
    • [A-Za-z0-9@.-]* - 0 个或多个 ASCII 字母或数字或文字 @/./- 符号的字符。
  • $ 字符串结尾。

所以,要点是:

  • @ 添加到第二个字符 class
  • 将整个表达式变成一个可选组(...)?(它也可以是一个非捕获组,顺便说一句:(?:...)?
  • 从字符 class 中删除不必要的转义符号(如果 - 位于字符 class 的 start/end 处,或者在有效范围之后的正则表达式中,它不需要转义)。