2011-08-17 10 views
13

Tengo un fragmento de código en C# que comprueba si un valor es un patrón de expresiones regulares válido. Código es sencillo:Un patrón de expresiones regulares no válido

 try 
    { 
     System.Text.RegularExpressions.Regex.IsMatch("", pattern); 
    } 
    catch (Exception) 
    { 
     return "pattern matches must be a valid regex value"; 
    } 

Estoy intentando probar si funciona correctamente, pero no puedo encontrar un patrón de expresión regular no válida .. jeje

¿Alguna sugerencia?

+0

diría 'try {System.Text.RegularExpressions.Regex.IsMatch ("", patrón);} catch (Exception) {return" las coincidencias de patrón deben ser un valor regex válido ";}' pero esa es una expresión correcta :) – Patrik

Respuesta

26

Esto es válido ...

[ 

También puede comprobar la validez de las expresiones regulares en tiempo real, en http://regexhero.net/tester/

Por cierto, que en realidad no tienen que probar la regularidad expresión contra una cadena para ver si es válida. Simplemente puede instanciar un nuevo objeto Regex y atrapar la excepción.

Esto es lo que hace Regex héroe para devolver un mensaje de error detallado ...

public string GetRegexError(string _regexPattern, RegexOptions _regexOptions) 
{ 
    try 
    { 
     Regex _regex = new Regex(_regexPattern, _regexOptions); 
    } 
    catch (Exception ex) 
    { 
     return ex.Message; 
    } 

    return ""; 
} 
+0

has guardado mi día – Szajba

5

Prueba esto:

* 

Por cierto, en Java no es un método para compilar una cadena a una patrón y arroja una excepción con diagnóstico de error preciso.

+1

.NET lo tiene también, es 'Regex.Compile'. – Blindy

6

He aquí un ejemplo de una expresión no correcta:

[0-9]++ 
Cuestiones relacionadas