2011-08-17 6 views
13

J'ai un morceau de code dans C# qui vérifie si une valeur est un motif regex valide. code est simple:Un motif regex invalide

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

Je suis en train de tester si cela fonctionne correctement, mais je ne peux pas trouver un motif regex invalide .. hehe

Toutes les suggestions?

+0

je dirais 'essayer {System.Text.RegularExpressions.Regex.IsMatch ("", modèle);} catch (Exception) {return" les correspondances de motifs doivent être une valeur regex valide ";}" mais c'est une expression correcte :) – Patrik

Répondre

26

C'est invalide ...

[ 

Vous pouvez également tester la validité des expressions régulières en temps réel à http://regexhero.net/tester/

Par ailleurs, vous n'avez pas fait pour tester la régulière expression sur une chaîne pour voir si elle est valide. Vous pouvez simplement instancier un nouvel objet Regex et intercepter l'exception.

C'est ce que Regex Hero fait de retourner un message d'erreur détaillé ...

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

    return ""; 
} 
+0

vous avez sauvé ma journée – Szajba

5

Essayez ceci:

* 

BTW, en Java il existe une méthode pour compiler une chaîne à une motif et il jette une exception avec un diagnostic d'erreur précise.

+1

.NET l'a aussi, c'est 'Regex.Compile'. – Blindy

6

Voici un exemple d'une expression non correcte:

[0-9]++