[英]C# Regular Expression for email validation in DataAnnotations - Double backslash
通過數據注釋看到此代碼用於電子郵件地址的正則表達式驗證。
我無法解決雙反斜杠的目的。
對我而言,電子郵件必須有反斜杠 - 但我知道這不是它正在做的事情!
[RegularExpression(".+\\@.+\\..+", ErrorMessage="Please enter a valid email")]
反斜杠是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; }
這將完美地工作..
在正則表達式中轉義時,某些字符具有特殊含義。 例如\\ d表示一個數字。
在C#中,反斜杠具有類似的功能。 例如\\ n表示換行符。 為了在C#中獲得字面反斜杠,你必須使用反斜杠來逃避它。 兩個一起與字面反斜杠相同。
C#有一種方法可以將字符串表示為文字,因此不使用反斜杠字符 - 在字符串前加上@。
雙反斜杠是必需的,因為反斜杠是C#中的轉義字符。 另一種選擇可能是@".+\\@.+\\..+"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.