我正在尝试使用正则表达式来验证名称输入字段。正则表达式非常简单,因为我只想允许字母和空格(现在)。这是我正在使用的代码:
[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 /? /(逃脱的空间)
任何人都可以解释为什么其中一些有效,有些则无法解释为什么我能让我想要的表达方式起作用(空格和字母)
答案 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
在转到正则表达式处理器之前将其转义。