由于正则表达式注释中无法识别的转义序列,ASP.Net MVC3应用程序未编译

时间:2012-07-17 11:23:02

标签: 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; }

然而,当我尝试构建它时,我收到一个指定“无法识别的转义序列”的错误。使用来自this sheet的不同字符来表达表达式我注意到有些会构建,有些则不会:

将构建:// / b / n

不会构建:/ s / k / B / D / d /? /(逃脱的空间)

任何人都可以解释为什么其中一些有效,有些则无法解释为什么我能让我想要的表达方式起作用(空格和字母)

2 个答案:

答案 0 :(得分:3)

编译器正在处理字符串,就像通常用于反斜杠一样。反斜杠是转义字符的条目。试试这个:

[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";

答案 1 :(得分:1)

如果字符串未预转义,请\\s代替\s,然后\s在转到正则表达式处理器之前将其转义。