2015-11-23 49 views
0

如何添加接受@以及下面的RegularExpression?DataAnnotations验证将“@”添加到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; } 
+0

'@“[A-Za-z0-9] [A-Za-z0-9 @ .-] * |^$”' –

+0

抱歉,没有工作,试图进入'@'但它不接受 –

+0

你的意思是你单独进入'@'吗?然后它不会工作。你有一条规则:*必须以字母或数字*开头。它仍然有效吗?如果不是,则还需要在第一个字符类中添加“@”:'@“[A-Za-z0-9 @] [A-Za-z0-9 @ .-] * |^$”' –

回答

1

使用

^([A-Za-z0-9][[email protected]]*)?$ 

参见regex demo

这里是正则表达式击穿:

  • ^ - 串的开始
  • ([A-Za-z0-9][[email protected]]*)? - 1或0(由于的10贪婪量词)发生...
    • [A-Za-z0-9] - 一个ASCII字母后跟...
    • [[email protected]]* - 0或多个字符或者是ASCII字母或数字或文字@/./-符号。
  • $字符串结束。

因此,要点是:

  • 加入@到第二字符类
  • 转动整个表达成任意组(...)?(它也可以是一个非捕获基团, BTW:(?:...)?
  • 从字符类中删除不必要的转义符号(如果-位于字符类的开始/结尾处,或者与正则表达式中的有效范围相同,则不需要转义)。
+0

对不起,只好等到我的孩子们上床睡觉。所有解释都添加了。 –

+1

1+感谢您的解释 –