Tester di regex
Prova un'espressione regolare su un testo di esempio e guarda ogni corrispondenza, i suoi gruppi di cattura e il risultato di una sostituzione.
Funziona interamente nel tuo browser
| # | Posizione | Corrispondenza | Gruppi |
|---|
Sintassi regex JavaScript (ECMAScript) come la supporta il tuo browser. Testo fino a 5 MB; le prime 1.000 corrispondenze vengono elencate ed evidenziate. Un pattern che gira per più di 2 secondi viene fermato.
Come testare un'espressione regolare
- Scrivi il pattern tra le barre e spunta i flag che ti servono, come
gper tutte le corrispondenze oiper ignorare maiuscole e minuscole. - Incolla il testo di prova. Le corrispondenze vengono evidenziate mentre scrivi, e la tabella elenca ogni corrispondenza con la sua posizione e i gruppi di cattura.
- Per controllare una sostituzione, scrivi un testo sostitutivo come
$2-$1o$<year>e leggi il risultato sotto.
Testare i pattern in sicurezza
Il tester costruisce una RegExp JavaScript dal tuo pattern e dai flag e la esegue in un worker in background, con lo stesso motore che userà il tuo codice in questo browser. Le corrispondenze tornano con la loro posizione iniziale e ogni gruppo di cattura, e la pagina le disegna sopra il tuo testo con evidenziazioni alternate così le corrispondenze vicine restano distinguibili. Una corrispondenza vuota, come quella che possono produrre \b o a*, appare come una sottile barra.
Eseguire il pattern in un worker è importante perché un'espressione regolare può richiedere tempo esponenziale. Se un pattern è ancora in esecuzione dopo 2 secondi, il worker viene fermato e ricevi un messaggio invece di una scheda bloccata. La stessa protezione tutela Trova e sostituisci.
Le posizioni sono contate in unità di codice UTF-16, che è il modo in cui contano le stringhe JavaScript: un'emoji o un altro carattere fuori dal piano base ne occupa due. L'elenco mostra le prime 1.000 corrispondenze; il conteggio totale sopra di esso include ogni corrispondenza.
Consigli
- Quando un pattern funziona, applicalo a un intero documento con Trova e sostituisci.
- Confronta il testo prima e dopo una sostituzione con Confronta due testi.
- Cerchi date in un log? Trasforma i timestamp in orari leggibili con il Convertitore di timestamp Unix.
Domande frequenti
Quale variante di regex usa?
Quella di JavaScript, eseguita dal motore del tuo browser, quindi i risultati sono esattamente quelli che dà RegExp nel tuo browser o in Node.js. La maggior parte della sintassi di uso comune è condivisa con PCRE, Python e Java, ma alcune funzioni differiscono: i quantificatori possessivi e i gruppi atomici non sono supportati, e lookbehind, gruppi con nome e il flag v richiedono un browser recente.
Perché viene mostrata una sola corrispondenza?
Senza il flag g (globale), una regex JavaScript trova solo la prima corrispondenza e la sostituzione cambia solo la prima occorrenza. Spunta g per trovarle tutte. Il tester segue il linguaggio alla lettera, così quello che vedi è ciò che farà il tuo codice.
Cosa fanno i flag?
g trova tutte le corrispondenze, i ignora maiuscole e minuscole, m fa corrispondere ^ e $ agli a capo, s permette a . di corrispondere agli a capo, u attiva la gestione completa di Unicode, v è la modalità Unicode più recente con operazioni sugli insiemi, y (sticky) corrisponde solo alla posizione corrente, e d registra l'inizio di ogni gruppo, cosa che il tester comunque usa per le posizioni dei gruppi.
Come uso i gruppi nella sostituzione?
$1, $2 e così via inseriscono i gruppi numerati, $<name> inserisce un gruppo con nome, $& inserisce l'intera corrispondenza, $` e $' inseriscono il testo prima e dopo di essa, e $$ scrive un simbolo del dollaro letterale.
Perché il mio pattern si è fermato con "ci ha messo troppo"?
Alcuni pattern, come ^(a+)+$ su una lunga serie di a che non finisce come previsto, fanno provare al motore un numero enorme di modi per far combaciare il testo. Si chiama backtracking catastrofico. Il tester esegue ogni pattern in un worker in background e lo ferma dopo 2 secondi così la pagina resta utilizzabile. Riscrivi le ripetizioni annidate come (a+)+ in a+.
Il mio testo viene inviato da qualche parte?
No. Il pattern e il testo restano nel tuo browser; la corrispondenza avviene sul tuo dispositivo e nulla viene caricato o salvato.