2010-02-06 20 views
8

Esiste un modo semplice in C# per verificare se un'espressione regolare è un'espressione regolare? In altre parole, vorrei verificare se un pattern regex fornito dall'utente non è corretto o meno. Questo è puramente un test di sintassi e non quello che la regex dovrebbe raggiungere/testare. GrazieQual è il modo più semplice in C# per convalidare se un'espressione regolare è ben formata?

+0

Con un'espressione regolare * smug look on face * – JulianR

+1

Seriamente, perché questa domanda ha 8 upvotes? La documentazione indica chiaramente che viene generata una 'ArgumentException' se si verifica un errore durante l'analisi dell'espressione regolare. –

+0

@JulianR: il linguaggio delle espressioni regolari non è di per sé un linguaggio normale. È necessario almeno un automa pushdown per riconoscere un'espressione regolare. –

risposta

5

È possibile provare a passarlo allo Regex constructor e individuare il potenziale ArgumentException che viene generato se l'argomento è un'espressione regolare non valida.

2

Ecco un esempio da C# Online .NET che utilizza eccezioni:

EDIT:

Rimosso il codice di rispettare i proprietari di copyright, per ogni evenienza. Basta cliccare sul link qui sopra per vederlo.

1

Devo dire, questo non suona bene. Probabilmente anche il sottogruppo estremamente piccolo di utenti di computer che sarebbero in grado di immettere correttamente un'espressione regolare dovrebbe interpretare correttamente il messaggio di eccezione. Cercare di convalidare la propria voce e sbagliarla sarebbe un motivo sufficiente per far sì che si arrabbino abbastanza e disinstallare il programma.

Se i programmatori esperti non sono effettivamente i clienti target, accertarsi di evitare espressioni regolari.

+0

Stai dicendo che l'applicazione non dovrebbe gestire l'eccezione? (cosa che causerebbe la sua chiusura)? Mi sembra ancora peggio. –

+0

Sono d'accordo, ma sfortunatamente non posso modificare i requisiti. Viene utilizzato per un motore di regole aziendali configurabile dall'utente e l'espressione regolare viene utilizzata solo per coprire alcuni potenziali casi limite. – Zoman

+0

@zoman - wow, non suona bene. Le regole aziendali non vengono inserite dai programmatori. Quindi, la necessità di convalidare la regex, senza dubbio. La prossima modalità di fallimento è che una regex valida non filtra correttamente, ma questo non è il problema della tua squadra. La felicità del cliente è ancora zero. Mostra questo post al tuo architetto astronauta, questo è tutto quello che posso fare. Buona fortuna con esso. –

Problemi correlati