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



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

[RegularExpression("[A-Za-zs]+",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//(逃逸空间)

有人能解释为什么其中一些有效,有些无效吗?更重要的是,我如何才能让我想要的表达式(空格和字母)发挥作用

编译器处理字符串的方式与通常处理反斜杠的方式完全相同。反斜杠是转义符的入口。试试这个:

[RegularExpression(@"[A-Za-zs]+",ErrorMessage="UserName can only consist of letters or spaces")]

@符号告诉编译器您正在处理任何转义符。

另一个例子是文件路径。。反斜杠必须用双反斜杠转义:

string fileName = "C:\my_folder\my_file.ext";

否则,您可以使用@符号:

string fileName = @"C:my_foldermy_file.ext";

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

最新更新