Tester di regex
Inserisci un pattern e un testo su cui provarlo: ogni corrispondenza viene evidenziata mentre scrivi.
Esempi
Usa $1 o $<name> per i gruppi, $& per l’intera corrispondenza e $$ per il simbolo del dollaro.
Elementi comuni
- .
- qualsiasi carattere tranne l’a capo
- \d
- una cifra 0–9
- \w
- una lettera a–z, una cifra o un trattino basso
- \s
- spazio, tabulazione o a capo
- \D \W \S
- il contrario di \d, \w e \s
- \b
- confine tra un carattere di parola e uno che non lo è
- ^
- inizio del testo, o della riga con m
- $
- fine del testo, o della riga con m
- [abc] [a-z]
- uno dei caratteri, o un carattere dell’intervallo
- [^abc]
- nessuno dei caratteri
- a|b
- a oppure b
- (…)
- gruppo di cattura
- (?:…)
- gruppo senza cattura
- (?<name>…)
- gruppo con nome
- \1 \k<name>
- lo stesso testo del gruppo 1 o del gruppo chiamato name
- *
- zero o più volte
- +
- una o più volte
- ?
- zero o una volta
- {3} {2,5} {2,}
- esattamente 3 volte, da 2 a 5 volte o almeno 2 volte
- *? +? ??
- il minor numero di volte possibile
- (?=…)
- seguito da
- (?!…)
- non seguito da
- (?<=…) (?<!…)
- preceduto da, non preceduto da
- \p{L}
- una lettera di qualsiasi alfabeto (richiede u o v)
Come funziona
Un’espressione regolare è un pattern che descrive del testo. \d+ significa una o più cifre, [a-z] una lettera dalla a alla z e ^ l’inizio del testo. Il pattern viene provato sul testo da sinistra a destra, e ogni punto in cui combacia è una corrispondenza.
Il tester usa il motore del tuo browser, cioè la variante di espressioni regolari definita dallo standard ECMAScript per JavaScript. Differisce da PCRE, Python e .NET per alcuni aspetti: per esempio non ci sono quantificatori possessivi né gruppi atomici, e il lookbehind può avere qualsiasi lunghezza.
I flag cambiano il modo in cui il pattern viene letto. g trova tutte le corrispondenze invece della sola prima, i ignora la differenza tra maiuscole e minuscole, m fa valere ^ e $ per ogni riga e s permette al punto di corrispondere agli a capo. u legge il testo come caratteri Unicode invece che come unità UTF-16, e v è una versione più rigorosa di u introdotta con ECMAScript 2024, con operazioni sugli insiemi nelle classi di caratteri. y richiede che ogni corrispondenza inizi esattamente dove è finita la precedente, e d registra le posizioni dei gruppi.
Le parentesi catturano ciò che hanno trovato e sono numerate in base alla parentesi di apertura, da sinistra. (?<name>…) dà un nome a un gruppo, e (?:…) raggruppa senza catturare. Nella sostituzione, $1 sta per il gruppo 1, $<name> per un gruppo con nome, $& per l’intera corrispondenza e $$ per il simbolo del dollaro. Senza il flag g viene sostituita solo la prima corrispondenza.
Alcuni pattern richiedono un tempo lunghissimo, come (a+)+$ su una lunga sequenza di a seguita da un carattere diverso. Il motore prova allora combinazioni il cui numero cresce in modo esponenziale con la lunghezza del testo: si parla di backtracking catastrofico. Qui la ricerca gira in un thread separato che viene fermato dopo due secondi, così la pagina non si blocca. In un programma su un server lo stesso pattern può diventare un rischio per la sicurezza (ReDoS).
Le posizioni si contano in unità UTF-16, come in JavaScript, quindi un’emoji conta due. Una corrispondenza vuota, come ^ o \b, è segnata con una linea sottile. Il tuo testo non lascia mai il browser.