2010-02-06 11 views
8

¿Hay alguna manera simple en C# para probar si una expresión regular es una expresión regular? En otras palabras, me gustaría verificar si un patrón de expresiones regulares proporcionado por el usuario está mal formado o no. Esto es puramente una prueba de sintaxis y no lo que se supone que la expresión regular logrará/probará. Gracias¿Cuál es la forma más fácil en C# para validar si una expresión regular está bien formada?

+0

Con una expresión regular * mirada petulante en la cara * – JulianR

+1

En serio, ¿por qué esta pregunta tiene 8 votos positivos? La documentación indica claramente que se lanza una 'ArgumentException' si hay un error al analizar la expresión regular. –

+0

@JulianR: el lenguaje de expresiones regulares no es en sí mismo un idioma normal. Necesitas al menos un autómata pushdown para reconocer una expresión regular. –

Respuesta

2

He aquí un ejemplo de C# Online .NET que utiliza excepciones:

EDIT:

ha eliminado el código de respetar los propietarios del copyright, por si acaso. Simplemente haga clic en el enlace de arriba para verlo.

1

Tengo que decir que esto no suena bien. También debería confiarse en que el subconjunto extremadamente pequeño de usuarios de computadoras que podrían ingresar correctamente una expresión regular interpretará correctamente el mensaje de excepción. Intentar validar su entrada y equivocarse sería motivo suficiente para que se vuelvan locos y desinstalen su programa.

Si los programadores experimentados no son en realidad su cliente objetivo, asegúrese de evitar la expresión regular.

+0

¿Está diciendo que la aplicación no debería manejar la excepción? (lo que causaría que termine)? Eso me suena peor. –

+0

Acepto, pero desafortunadamente no puedo cambiar los requisitos. Esto se usa para un motor de reglas de negocios que puede configurar el usuario y regex solo se usa para cubrir algunos casos extremos potenciales. – Zoman

+0

@zoman - wow, eso no suena bien. Los programadores no entran en reglas de negocios. Por lo tanto, la necesidad de validar la expresión regular, sin duda. El siguiente modo de falla es que una expresión regular válida simplemente no filtra correctamente, pero ese no es el problema de su equipo. La felicidad del cliente sigue siendo cero. Muestre esta publicación a su arquitecto astronauta, eso es todo lo que puedo hacer. Suerte con ello. –

Cuestiones relacionadas