2011-11-08 25 views
0

特定のIPアドレス範囲のユーザーに対して、* .aspxからコンテンツを除外します。C#IP範囲フィルタ

string ipRange = @"^12\.345\.678\.(2(4[0-9]|5[0-5]))$"; 
if (!System.Text.RegularExpressions.Regex.IsMatch(Request.UserHostAddress.ToString(), System.Text.RegularExpressions.Regex.Escape(ipRange))){//BLOCKED CONTENT GOES HERE} 

は、私は正規表現でかなり弱いので、私はだまされ、それが効果的に私が何をしないのです12.345.678.254

をブロックしていない。この例では、GoogleのIP Range Tool

を使用してパターンを得ましたか。

ありがとうございます!あなたが正規表現をエスケープするべきではありません

+2

「12.345.678.254」は有効なIPアドレスではありません... –

+0

なぜあなたはエスケープしていますか?あなたの正規表現のパターンは大丈夫です...ただそれをエスケープしないでください。 – pjvds

+0

@DanBreen +1細部のための目: – pjvds

答えて

4

System.Text.RegularExpressions.Regex.Escape(ipRange) 

は次のようになります。

ipRange 

あなたはそれをエスケープした場合、たとえば[0-9]はもはや数字でと一致するように、すべての文字が、リテラルになりません0〜9の文字列ではなく、[0-9]の5文字からなる文字列と一致します。

+0

それはそれをしました。答えと説明をありがとう!私はどこかで私の正規表現でバックスラッシュを処理するためにエスケープが必要でした。私の実装には.escape()は必要ではなかったと思います。 – s15199d

関連する問題