0

我正在尝试使用正则表达式来验证名称输入字段。正则表达式非常简单,因为我只想允许字母和空格(现在)。这是我正在使用的代码:

[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 /? /(逃逸空间)

谁能解释为什么其中一些有效而有些无效,以及如何让我想要的表达方式起作用(空格和字母)

4

2 回答 2

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";
于 2012-07-17T11:27:16.087 回答
1

如果字符串没有预先转义,则\\s尝试在它到达正则表达式处理器之前对其进行转义。\s\s

于 2012-07-17T11:26:25.687 回答