Tester Regex Online
Testa le espressioni regolari in tempo reale con evidenziazione delle corrispondenze.
2 matches found
Perché usarlo
Debug delle regex in tempo reale
Istantaneo
Le corrispondenze si evidenziano mentre scrivi. Zero latenza.
Preciso
Gruppi di cattura, posizioni e flag visualizzati chiaramente.
Compatibile
Supporta la sintassi regex di JavaScript, Python e PCRE.
Privato
Il testo di test rimane nel tuo browser. Nessun dato viene inviato.
Come funziona
Tre passaggi, senza complicazioni
Scrivi la tua regex
Inserisci l'espressione regolare nel campo apposito. Puoi aggiungere flag come i (case-insensitive), g (globale) o m (multiriga).
Inserisci il testo di test
Incolla il testo su cui vuoi testare la regex. Le corrispondenze vengono evidenziate in tempo reale mentre scrivi.
Analizza le corrispondenze
Visualizza tutte le corrispondenze trovate, i gruppi di cattura e le loro posizioni nel testo.
FAQ
Hai delle domande?
I gruppi di cattura sono porzioni della regex racchiuse tra parentesi che memorizzano la sottostringa corrispondente. Con la regex (\d{4})-(\d{2})-(\d{2}) applicata a una data, il gruppo 1 cattura l'anno, il gruppo 2 il mese e il gruppo 3 il giorno. I gruppi non-catturanti si scrivono con (?:...) e raggruppano senza memorizzare. I gruppi nominati usano la sintassi (?P<nome>...) o (?<nome>...) a seconda del motore regex.
Il flag g (global) fa trovare tutte le corrispondenze nel testo invece di fermarsi alla prima. Il flag m (multiline) fa sì che il carattere ^ corrisponda all'inizio di ogni riga e $ alla fine di ogni riga, non solo all'inizio e alla fine dell'intera stringa. Il flag s (dotAll) fa corrispondere il punto . anche ai caratteri di a capo, che normalmente vengono esclusi. Combinare questi flag permette di costruire pattern molto precisi.
La validazione precisa delle email con regex è notoriamente complessa perché lo standard RFC 5322 ammette una varietà di formati insoliti. Un pattern pratico e bilanciato è qualcosa come [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}. Questo copre la stragrande maggioranza degli indirizzi reali ma non tutti i casi edge dello standard. Per la validazione in produzione è spesso preferibile combinare la regex con un controllo DNS o un servizio di verifica email.
Il backtracking è il meccanismo con cui i motori regex esplorano percorsi alternativi quando un pattern non corrisponde. Pattern con quantificatori annidati come (a+)+ su input progettati ad hoc possono causare un numero esponenziale di tentativi, noto come ReDoS (Regular Expression Denial of Service). Per evitarlo usa quantificatori possessivi o atomic groups quando il motore li supporta, oppure riscrivi il pattern per eliminare l'ambiguità.
I motori regex dei principali linguaggi sono tutti basati sullo standard PCRE o derivati, ma con differenze nei flag e nelle funzionalità avanzate. JavaScript non supporta i lookbehind di lunghezza variabile nelle versioni precedenti a ES2018, mentre Python e PHP (PCRE) li ammettono. I named groups usano sintassi diverse tra i linguaggi. Testa sempre la regex nel motore del linguaggio target prima di usarla in produzione.
Storia delle espressioni regolari: da Kleene a PCRE
Le espressioni regolari hanno radici nella teoria degli automi degli anni Cinquanta: il matematico Stephen Cole Kleene le formalizzò nel 1956 come notazione per descrivere i linguaggi regolari. Ken Thompson le rese pratiche nel 1968 implementandole nel suo editor QED per Unix, introducendo la notazione che ancora oggi usiamo per operatori come * e +. La presenza delle regex nei tool Unix come grep, sed e awk le rese lo strumento standard per l'elaborazione del testo.
PCRE (Perl Compatible Regular Expressions) fu sviluppato da Philip Hazel nel 1997 per replicare la potente implementazione regex di Perl in altre applicazioni. PCRE introdusse funzionalità avanzate come i lookahead e lookbehind, i gruppi non-catturanti, i gruppi nominati e il supporto Unicode, diventando la base dei motori regex in PHP, Python, Ruby, R e molti altri linguaggi. PCRE2, rilasciato nel 2015, è la versione moderna ancora attivamente mantenuta.
Oggi le espressioni regolari sono uno strumento fondamentale nello sviluppo software: dalla validazione dei form alla ricerca nei log, dall'analisi del codice sorgente ai sistemi di routing delle URL nei web framework. La comprensione approfondita delle regex, inclusi i meccanismi di backtracking e le implicazioni di sicurezza come il ReDoS, è considerata una competenza avanzata nello sviluppo backend e nella sicurezza applicativa.