2009-09-03 17 views
19

Zajmuję się tworzeniem aplikacji w .NET, gdzie użytkownik może dostarczyć wyrażeń regularnych, które następnie są używane do sprawdzania danych wejściowych.Jak sprawdzić poprawność wyrażenia regularnego?

Potrzebuję sposobu, aby sprawdzić, czy wyrażenie regularne jest rzeczywiście poprawne dla silnika .net regex.

Dzięki za pomoc

Odpowiedz

30

Po prostu spróbuj skompilować podane wyrażenie regularne. Możesz to zrobić, tworząc obiekt Regex i przekazując do niego wzorzec. Oto przykładowy kod:

public static bool IsRegexPatternValid(String pattern) 
{ 
    try 
    { 
     new Regex(pattern); 
     return true; 
    } 
    catch { } 
    return false; 
} 
+0

Takie podejście stosuję obecnie. Problem polega na tym, że używam bloku try {} catch {}. Chciałem wiedzieć, czy jest to sposób nie wyjątkowy. Mimo to –

+2

To jest właśnie sposób, w jaki klasa Regex jest zaprojektowana w .NET - aby sprawdzić, czy wzór jest poprawny, musisz go skompilować i sprawdzić, czy są zgłaszane jakiekolwiek wyjątki. Nigdy nie słyszałem o żadnym innym sposobie robienia tego. – Paulius

+0

Ugh to jest ciężkie, jeśli używasz go jako filtra dynamicznego w dużej kolekcji :( – Sinaesthetic

Powiązane problemy