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")]

@ 記号は、エスケープ文字を処理していることをコンパイラに伝えます。

もう 1 つの例はファイル パスです。バックスラッシュは 2 つのバックスラッシュでエスケープする必要があります。

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 に答える