对于某个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
我错过了什么?
提前感谢!
答案 0 :(得分:4)
你不应该逃避正则表达式:
System.Text.RegularExpressions.Regex.Escape(ipRange)
应该是:
ipRange
如果你转义它,所有字符都变成文字,所以例如[0-9]
不再匹配0到9中的数字,而是匹配由五个字符组成的字符串[
,{{1 }},0
,-
,9
。