Convertitore gratuito

Regex Tester

Testa ed esegui il debug delle espressioni regolari istantaneamente nel tuo browser. Evidenzia le corrispondenze, visualizza i gruppi di acquisizione e utilizza la modalità di sostituzione: gratuita e privata.

//g
Bandiere:

Informazioni su questo strumento

Le espressioni regolari sono un linguaggio specifico del dominio per la corrispondenza dei modelli nel testo. Fanno parte dell'informatica dal 1968 e ora sono integrati in ogni moderno linguaggio di programmazione, editor di testo e strumento di ricerca da riga di comando. La sintassi è concisa ma soggetta a errori: piccole modifiche producono comportamenti di corrispondenza leggermente diversi e le espressioni complesse diventano rapidamente illeggibili. Un tester che mostra le corrispondenze in tempo reale mentre modifichi il pattern è il modo più efficace per sviluppare e verificare regex.

Questo tester viene eseguito nel tuo browser utilizzando il motore regex JavaScript (lo stesso utilizzato dalla tua applicazione se viene eseguito in un browser). I modelli e il testo del test si aggiornano in modo reattivo: ogni modifica a uno dei due riavvia la partita. I gruppi di corrispondenza vengono evidenziati, i gruppi acquisiti vengono elencati e i flag (senza distinzione tra maiuscole e minuscole, multilinea, globale) vengono esposti per il test.

La sintassi Regex varia leggermente tra i motori. JavaScript segue le specifiche ECMAScript; Python, PCRE (utilizzato da PHP e molti altri), Java e Go hanno ciascuno i propri dialetti con caratteristiche sovrapposte ma non identiche. I modelli sviluppati qui utilizzano la sintassi ECMAScript; la portabilità tra motori richiede il controllo della documentazione di ciascuna destinazione.

Perché utilizzare un tester Regex

I bug regex sono notoriamente difficili da eseguire il debug dopo la distribuzione. Un modello che sembra ragionevole potrebbe corrispondere più o meno del previsto, fallire in casi limite o avere un backtracking catastrofico su determinati input. Testare i modelli in modo interattivo rispetto a input rappresentativi rileva i problemi prima della revisione e della produzione del codice.

Anche i modelli traggono vantaggio dalla documentazione. Mostrare una regex accanto all'input a cui dovrebbe corrispondere e all'input a cui non dovrebbe corrispondere rende esplicito l'intento. I futuri manutentori (incluso te tra sei mesi) apprezzano i casi di test documentati più di quanto apprezzino le battute intelligenti.

Come usarlo

Digita un modello, digita test input, guarda le partite evidenziate dal vivo.

  1. Inserisci il tuo modello: Digita il modello regex nel campo modello. Funzionano sia le espressioni regolari letterali (/pattern/flags) che le forme solo pattern; i flag possono essere impostati tramite l'ingresso flags.
  2. Aggiungi input di prova: Incolla il testo di esempio a cui il modello dovrebbe corrispondere (e idealmente anche il testo a cui non dovrebbe corrispondere). Il tester esegue il modello rispetto all'input ed evidenzia le corrispondenze.
  3. Imposta le bandiere: Flag comuni: g (globale, trova tutte le corrispondenze), i (senza distinzione tra maiuscole e minuscole), m (multilinea, ^ e $ iniziano/finiscono le righe di corrispondenza), s (dotall, . corrisponde alle nuove righe), u (Unicode).
  4. Ispezionare i risultati: Ogni corrispondenza è evidenziata nell'input. I gruppi di acquisizione vengono visualizzati in un elenco con indice e valore del gruppo. Il tester mostra anche il conteggio delle corrispondenze e gli eventuali errori di compilazione nel pattern.

Casi d'uso comuni

Dettagli tecnici

L'espressione regolare JavaScript segue la specifica ECMAScript. Caratteristiche principali: classi di caratteri ([abc], [^abc]), quantificatori (*, +, ?, {n,m}), alternanza (|), raggruppamento ((...)), gruppi catturanti e non catturanti, lookahead e lookbehind (motori moderni), riferimenti all'indietro, gruppi con nome, escape di proprietà Unicode (con flag u) e l'insieme standard di sequenze di escape.

Differenze importanti rispetto a PCRE e Python: il supporto lookbehind è recente in JavaScript (2018+); i gruppi con nome usano la sintassi (?<nome>...); alcuni escape Unicode richiedono il flag u per funzionare correttamente. I modelli destinati all'uso in più lingue dovrebbero essere confrontati con la documentazione di ciascun target.

Prestazioni: i motori regex basati sul backtracking (la maggior parte include JavaScript) possono avere un backtracking catastrofico su determinati modelli patologici. I test che bloccano il tester indicano che il modello necessita di semplificazione, in genere evitando quantificatori annidati e alternanze ambigue.

Migliori pratiche

Domande frequenti

Quale sapore regex supporta questo strumento?
Utilizza il motore RegExp integrato di JavaScript, che supporta la sintassi standard inclusi lookahead, lookbehind (nei browser moderni), gruppi di acquisizione denominati e escape delle proprietà Unicode.
Posso testare le sostituzioni regex?
SÌ. Passa alla modalità Sostituisci per inserire un modello di sostituzione. È possibile utilizzare $1, $2 e così via per i riferimenti all'indietro dei gruppi di acquisizione e $<nome> per i gruppi denominati.
Perché la mia espressione regolare corrisponde in modo diverso qui rispetto a Python/PHP?
Diversi linguaggi di programmazione hanno motori regex leggermente diversi. JavaScript non supporta quantificatori possessivi o alcune funzionalità specifiche di PCRE. La sintassi di base (classi di caratteri, quantificatori, gruppi) è la stessa in tutte le lingue.
Lo strumento salva i miei modelli regex?
No. Niente viene salvato o trasmesso. Lo strumento funziona interamente nel tuo browser. Puoi aggiungere segnalibri o condividere modelli copiando la stringa regex.
Come faccio a far corrispondere un carattere speciale letterale?
Sfuggilo con una barra rovesciata. Per corrispondere a un punto letterale: \. Per corrispondere a una barra rovesciata letterale: \\. All'interno delle classi di caratteri [...], la maggior parte dei caratteri speciali perde il proprio significato.
Il tester è in esecuzione su un server?
No. La compilazione e la corrispondenza dei modelli avvengono nel tuo browser utilizzando l'oggetto RegExp nativo.
Posso testare modelli per motori non JavaScript?
Soprattutto. Per i modelli semplici i motori principali sono d'accordo. Per le funzionalità avanzate (lookbehind, gruppi atomici, quantificatori possessivi, escape delle proprietà Unicode), verificare con la documentazione del motore di destinazione.
Gestisce input molto grandi?
Fino a pochi megabyte funziona senza problemi. Input più grandi potrebbero rallentare o bloccare il browser, soprattutto con pattern inclini al backtracking.