2011-11-08 134 views
0

我想从我的* .aspx中排除某些IP地址范围内的用户的内容。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} 

我在正则表达式相当薄弱,所以我欺骗和使用谷歌的IP Range Tool

在这个例子中它不是有效阻断12.345.678.254

我错过了模式?

提前致谢!

+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, ]

+0

这样做。感谢您的回答,并解释!我在某处阅读我需要逃生处理我的正则表达式中的反斜杠。猜测.escape()对我的实现不是必需的。 – s15199d