2016-04-01 12 views
2

アポストロフィ、スペース、およびハイフンを含むA-Za-z0-9のみを含む正規表現を使用して文字列を検証する必要があります。範囲。私は、次の方法でこれを無駄にしようとしました。私は間違って何をしていますか?A-ZA-Z0-9アポストロフィ、スペース、およびハイフンの適切な正規表現

これは、O'Neil、von-studder、vons studderを検証し、範囲が20文字を超えるか、A-Za-z0-9以外のアポストロフィ、スペース、およびハイフンを含む文字が含まれていると失敗します。

public static bool ValidLdapSearchString(string input, int minLength, int maxLength) 
{ 
    try 
    { 
     string stringValid = @"^[a-zA-Z0-9 " + Regex.Escape("'-") + "]{" + minLength + "," + maxLength + "}"; 
     Regex regEx = new Regex(stringValid); 

     if (!string.IsNullOrEmpty(input) && regEx.IsMatch(input)) 
     { 
      return true; 
     } 

     return false; 
    } 
    catch 
    { 
     throw; 
    } 
} 

答えて

3

あなたが最後に$\zアンカーを必要とし、あなたがRegex.Escapeでエスケープ記号エスケープは必要ありません:あなたが持っていない.NET regex demo

注を参照してください

string stringValid = @"^[a-zA-Z0-9 '-]{" + minLength + "," + maxLength + "}$"; 

は、ハイフンが文字クラスの末尾(終了の直前、])にあるため、ハイフンをエスケープします。 'は特殊文字ではないため、エスケープする必要はありません。

あなたは、文字列だけで、これらのシンボルで構成され、末尾には改行文字を持っていないことを確認する必要がある場合は、代わりに$\zアンカーを使用する(つまり、右の最後の\n前に、いずれかの文字列の末尾または文字列の末尾にマッチし文字列)。

+0

実際には、 '' 'はアポストロフィです - ダッシュと呼んだのですか?その後、 ' - 'を削除する必要があります。 –

+0

私は 'アポストロフィとダッシュが必要です - – CodeFunny

+0

クール、それは正規表現が動作している必要があることを意味します。 em-dash '-'またはen-dash' -'を削除できます。 –

関連する問題