Filtro de rango de IP de C #

Quiero excluir contenido de mi * .aspx, para usuarios en un cierto rango de direcciones 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}

Soy bastante débil con las expresiones regulares, así que hice trampa y obtuve el patrón usando Google Herramienta de rango de IP

En este ejemplo, no está bloqueando efectivamente 12.345.678.254

¿Qué me estoy perdiendo?

¡Gracias de antemano!

preguntado el 08 de noviembre de 11 a las 17:11

Quizás irrelevante, pero 12.345.678.254 no es una dirección IP válida ... -

¿Por qué estás escapando? Tu patrón de expresiones regulares está bien ... simplemente no te escapes. -

@DanBreen +1 para el ojo para los detalles :) -

1 Respuestas

No deberías escapar de la expresión regular:

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

debiera ser:

ipRange

Si lo escapas, todos los caracteres se vuelven literales, por ejemplo [0-9] ya no coincide con un dígito del 0 al 9, sino que coincide con la cadena que consta de los cinco caracteres [, 0, -, 9, ].

respondido 08 nov., 11:21

Eso lo hizo. ¡Gracias por la respuesta y la explicación! Leí en algún lugar que necesitaba el escape para manejar las barras invertidas en mi expresión regular. Supongo que .escape() no era necesario para mi implementación. - s15199d

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.