C# 由于正则表达式批注中无法识别转义序列,ASP.Net MVC3应用程序未编译
我正在尝试使用正则表达式验证名称输入字段。正则表达式非常简单,因为我只想允许字母和空格(目前)。以下是我正在使用的代码:C# 由于正则表达式批注中无法识别转义序列,ASP.Net MVC3应用程序未编译,c#,regex,asp.net-mvc-3,razor,C#,Regex,Asp.net Mvc 3,Razor,我正在尝试使用正则表达式验证名称输入字段。正则表达式非常简单,因为我只想允许字母和空格(目前)。以下是我正在使用的代码: [RegularExpression("[A-Za-z\s]+",ErrorMessage="UserName can only consist of letters or spaces")] [Required] [DisplayName("User Name")] public string UserName { get; set; } 然而,当
[RegularExpression("[A-Za-z\s]+",ErrorMessage="UserName can only consist of letters or spaces")]
[Required]
[DisplayName("User Name")]
public string UserName { get; set; }
然而,当我尝试构建它时,我得到一个错误,指定了一个“无法识别的转义序列”。我注意到,一些人会构建,一些人不会:
将生成:///b/n
不会生成:/s/k/B/D/D//(逃逸空间)
有人能解释一下为什么这些表达式中有些有效,有些无效,更确切地说,我怎样才能使我想要的表达式(空格和字母)起作用呢?尝试
\\s
而不是\s
如果字符串没有预先转义,那么\s
在到达正则表达式处理器之前将其转义 尝试\\s
而不是\s
如果字符串未预先转义,则\s
在到达正则表达式处理器之前将其转义 编译器处理字符串的方式与反斜杠处理字符串的方式完全相同。反斜杠是转义字符的条目。试试这个:
[RegularExpression(@"[A-Za-z\s]+",ErrorMessage="UserName can only consist of letters or spaces")]
@符号告诉编译器您正在处理任何转义字符
另一个例子是文件路径。。反斜杠必须用双反斜杠转义:
string fileName = "C:\\my_folder\\my_file.ext";
..否则,您可以使用@符号:
string fileName = @"C:\my_folder\my_file.ext";
编译器处理字符串的方式与反斜杠处理字符串的方式完全相同。反斜杠是转义字符的条目。试试这个:
[RegularExpression(@"[A-Za-z\s]+",ErrorMessage="UserName can only consist of letters or spaces")]
@符号告诉编译器您正在处理任何转义字符
另一个例子是文件路径。。反斜杠必须用双反斜杠转义:
string fileName = "C:\\my_folder\\my_file.ext";
..否则,您可以使用@符号:
string fileName = @"C:\my_folder\my_file.ext";