用于DataAnnotations中电子邮件验证的C#正则表达式-双反斜杠

用于DataAnnotations中电子邮件验证的C#正则表达式-双反斜杠,c#,regex,asp.net-mvc-2,C#,Regex,Asp.net Mvc 2,查看了通过数据注释对电子邮件地址进行正则表达式验证的代码 我搞不清楚双反斜杠的用途 对我来说,这是说电子邮件中一定有反斜杠,但我知道这不是它所做的 [RegularExpression(".+\\@.+\\..+", ErrorMessage="Please enter a valid email")] 双反斜杠是必需的,因为反斜杠是C#中的转义字符。另一种选择是@.+\@.+\..+”反斜杠在C#和正则表达式中都是转义字符。因此,在C中,“\\”等于一个反斜杠。生成的反斜杠随后用于转义

查看了通过数据注释对电子邮件地址进行正则表达式验证的代码

我搞不清楚双反斜杠的用途

对我来说,这是说电子邮件中一定有反斜杠,但我知道这不是它所做的

 [RegularExpression(".+\\@.+\\..+",   ErrorMessage="Please enter a valid email")]

双反斜杠是必需的,因为反斜杠是C#中的转义字符。另一种选择是
@.+\@.+\..+”

反斜杠在C#和正则表达式中都是转义字符。因此,在C中,
“\\”
等于一个反斜杠。生成的反斜杠随后用于转义
,这是一个元字符,因此必须转义。我不知道为什么
@
会转义。

某些字符在正则表达式中转义时具有特殊意义。例如\d表示一个数字

在C#中,反斜杠具有类似的功能。例如\n表示换行符。为了在C#中获得文字反斜杠,您必须用反斜杠将其转义。两者加在一起等于一个反斜杠

C#有一种将字符串表示为文字的方法,因此不使用反斜杠字符-在字符串前面加@。

表示MVC2模式

using System.ComponentModel.DataAnnotations;

public class EmailValidationAttribute: RegularExpressionAttribute
{    
    public EmailValidationAttribute() : base(@"^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-zA-Z0-9]{1}[a-zA-Z0-9\-]{0,62}[a-zA-Z0-9]{1})|[a-zA-Z])\.)+[a-zA-Z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$")
    {

    }
}
然后使用

[EmailValidation(ErrorMessage="Not a valid Email Address")]
public string Email { get; set; }

这将非常有效。

我尝试了此解决方案,它对于服务器端验证非常有效。但是,EmailValidationAttribute不会连接到客户端验证。不过,只需将RegularExpressionAttribute与您提供的正则表达式一起使用,在客户端和服务器端都非常有效。类似这样的事情如下如下如下:以下类似如下如下如下如下:(以下如下如下如下如下如下:(以下以下如下如下如下如下如下如下如下如下如下:(以下以下如下如下如下如下如下如下如下如下如下:(以下以下以下如下如下如下如下如下如下:(以下以下以下如下如下如下如下如下如下:(以下以下以下以下如下如下如下如下:(以下以下以下以下如下如下如下如下如下如下::::::::::[以下以下以下以下以下以下以下以下以下以下以下以下以下以下::::::::::::::::::除除除除除除除除除上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述上述以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下的可能可能可能可能可能可能可能可能可能可能可能可能可能可能可能可能可能可能可能可能可能可能可能的::::::::::::::::::::::::::::::::::\d{1,3}\.{3}\d{1,3}(\:\d{1,5})?)$”,ErrorMessage=“电子邮件地址必须是有效的电子邮件地址。”)]请重试