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?
risposta
È possibile provare a passarlo allo Regex constructor e individuare il potenziale ArgumentException che viene generato se l'argomento è un'espressione regolare non valida.
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.
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.
Stai dicendo che l'applicazione non dovrebbe gestire l'eccezione? (cosa che causerebbe la sua chiusura)? Mi sembra ancora peggio. –
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
@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. –
- 1. Qual è il modo più rapido per controllare in modo programmatico la ben formata dei file XML in C#?
- 2. C#: qual è il modo più semplice per sottrarre tempo?
- 3. Qual è la più semplice espressione regolare per convalidare le e-mail per non accettarle ciecamente?
- 4. Qual è il modo più semplice per leggere diversi ints da stdin se è ok fallire?
- 5. Qual è il modo più semplice per mantenere oggetti java?
- 6. Qual è il modo più semplice per dire se una grammatica BNF è ambigua o no?
- 7. Autoinizializzazione di una variabile constexpr statica, è ben formata?
- 8. Qual è il modo più semplice per creare un'estensione C opzionale per un pacchetto python?
- 9. Qual è il modo più semplice per creare applicazioni multithread con C/C++?
- 10. Qual è il modo più semplice per riprodurre un campione sonoro in Haskell?
- 11. Qual è il modo più semplice per rimuovere tutti gli attributi da un XML in C#?
- 12. Qual è il modo più semplice in C# per tagliare una nuova riga da una stringa?
- 13. Qual è il modo più semplice per ottenere una OutOfMemoryException in C#?
- 14. Qual è il modo più semplice per ottenere l'input dell'utente in C?
- 15. Qual è il modo più semplice per eseguire la comunicazione tra processi in C#?
- 16. Qual è il modo più semplice per gestire array associativi in C#?
- 17. Qual è il modo Pythonic per implementare un semplice FSM?
- 18. Modello Meteor: qual è il modo più semplice per verificare se un utente ha effettuato l'accesso?
- 19. Qual è il modo più semplice per verificare se la stringa contiene un tag immagine?
- 20. Qual è il modo più semplice per creare una tabella Excel con C#?
- 21. Qual è il modo più semplice per combinare più raccolte in uno stream in Java?
- 22. Qual è la più semplice implementazione RTTI per C++?
- 23. Qual è il modo più semplice per effettuare più richieste Web di seguito?
- 24. Qual è il modo più semplice per determinare se `<input type =" email "..` (per esempio) è supportato nel browser corrente?
- 25. Qual è il modo più semplice in Javascript per ottenere solo il segno di un numero?
- 26. Qual è il modo migliore per analizzare questo in C++?
- 27. Qual è il cloud più semplice per contenuto Web statico
- 28. In Chrome, qual è il modo più semplice per visualizzare il tipo mime di un documento?
- 29. Qual è il modo più semplice/veloce per scoprire quando è stato creato un ramo git?
- 30. Qual è il modo più semplice per far funzionare matplotlib in OSX in un ambiente virtuale?
Con un'espressione regolare * smug look on face * – JulianR
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. –
@JulianR: il linguaggio delle espressioni regolari non è di per sé un linguaggio normale. È necessario almeno un automa pushdown per riconoscere un'espressione regolare. –