2012-03-19 9 views
0

入力された文字に基づいて文字列を検証しようとしています。私は、文字と数字のほかにどの文字が許されるかを設定できるようにしたい。以下は私の拡張メソッドです:正規表現でスラッシュ(および他の同様の文字)を使用できるようにする#

public static bool isAlphaNumeric(this string inputString, string allowedChars) 
{ 
    StringBuilder str = new StringBuilder(allowedChars); 
    str.Replace(" ", "\\s"); 
    str.Replace("\n","\\\\"); 
    str.Replace("/n", "////"); 
    allowedChars = str.ToString(); 

    Regex rg = new Regex(@"^[a-zA-Z0-9" + allowedChars + "]*$"); 
    return rg.IsMatch(inputString); 
} 

私はこれを使用する方法は次のとおりです。もちろん

s string = " te\[email protected] 1963' yili.ışçöÖÇÜ/nda olbnrdu" // just a test string with no meaning 
if (s.isAlphaNumeric("ışŞö\Ö@üÜçÇ ğ'Ğ/.")) {...} 

それがエラーを与える:

parsing "^[a-zA-Z0-9ışŞö\Ö@üÜçÇ\sğ'Ğ/.]*$" - Unrecognized escape sequence 

のStringBuilderは、機能を置き換える私はこれが間違っています知っている。私は、allowedCharsパラメーターで指定されたすべての文字を受け入れることができるようにします。これにはスラッシュ(私が気付いていないスラッシュに似た他の文字も含まれます)があります。これを考えると、私はどのように私のリプレース機能を動作させることができますか?私がやっているやり方も正しいのですか?私は正規表現には非常に新しいですし、それらを扱う方法の手がかりがありません...

+0

あなたが指定したコードはコンパイルされません。 '^ [' a-zA-Z0-9']を前面に置くことはできません。 *実際の*テストコードを投稿できますか? –

+0

ジョン、なぜコンパイルされないのかわかりません。それはここで大丈夫に動作します..しかし、助けてくれてありがとう.. –

+0

あなたが与えた正確なコード( "私はこれを使用する方法"の下にある)?私は本当にそうは思わない。最初の行では、変数の名前と型が間違っています。文字列リテラルに '\ m'があり、セミコロンはありません。あなたの本当のコードです。 –

答えて

6

あなたの文字列にRegex.Escapeを使用する必要があります。

allowedChars = Regex.Escape(str.ToString()); 

する必要があります。

2

あなたはRegex.Escapeを探しています。