C#IP范围过滤器

时间:2011-11-08 17:11:29

标签: c# asp.net regex

对于某个IP地址范围内的用户,我想从我的* .aspx中排除内容。

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}

我在正则表达式上非常弱,所以我欺骗并使用Google的IP Range Tool

获得了模式

在此示例中,它无法有效阻止12.345.678.254

我错过了什么?

提前感谢!

1 个答案:

答案 0 :(得分:4)

你不应该逃避正则表达式:

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

应该是:

ipRange

如果你转义它,所有字符都变成文字,所以例如[0-9]不再匹配0到9中的数字,而是匹配由五个字符组成的字符串[,{{1 }},0-9