Come usare Regex Tester
- Inserisci il pattern tra le barre, senza le
/ esterne. - Attiva o disattiva flag come
g (tutte le corrispondenze), i (ignora maiuscole/minuscole) e m (multiriga). - Incolla il testo di prova. Le corrispondenze vengono evidenziate a destra ed elencate sotto con indice e gruppi di cattura.
- Spunta Sostituisci e inserisci una sostituzione come
$1 o $<name> per vedere l'anteprima di String.replace. - Scegli un pattern dalla Libreria di pattern per partire da una regex già testata per email, URL, IP o date.
Espressioni regolari JavaScript
Questo tester usa il motore RegExp del tuo browser, quindi i risultati sono esattamente quelli che String.match, matchAll, replace e RegExp.exec restituiscono in JavaScript e Node.js. Inclusa la sintassi moderna: gruppi con nome (?<name>…), lookbehind (?<=…), escape di proprietà Unicode come \p{L} con il flag u e indici delle corrispondenze con il flag d.
Cosa fanno i flag
| Flag | Nome | Effetto |
g | global | Trova tutte le corrispondenze invece di fermarsi alla prima. |
i | ignoreCase | Le lettere corrispondono indipendentemente da maiuscole e minuscole. |
m | multiline | ^ e $ corrispondono all'inizio e alla fine di ogni riga. |
s | dotAll | . corrisponde anche agli a capo. |
u | unicode | Tratta il pattern come code point; abilita \p{…} e \u{…}. |
y | sticky | Cerca corrispondenze solo nella posizione lastIndex corrente. |
d | hasIndices | Riporta le posizioni di inizio e fine di ogni gruppo di cattura. |
Protezione dal backtracking catastrofico
I pattern con quantificatori annidati, come (a+)+$ o (\w|\d)*x, possono richiedere un tempo esponenziale su input che corrispondono quasi. In una normale pagina web questo blocca la scheda. Qui ogni ricerca gira in un Web Worker in background che viene fermato dopo un secondo, e ricevi un avviso chiaro invece di un browser bloccato. Lo stesso pattern nel codice di produzione potrebbe essere una vulnerabilità ReDoS, quindi tratta l'avviso come un bug da correggere.
Consigli per scrivere regex migliori
- Ancora i pattern con
^ e $ quando validi valori interi, altrimenti basta una corrispondenza in qualsiasi punto della stringa.
- Preferisci classi specifiche come
[^"]* a .*: sono più veloci ed evitano corrispondenze eccessive.
- Usa gruppi non catturanti
(?:…) quando non ti serve il valore catturato.
- Dai un nome ai gruppi.
match.groups.year è più leggibile di match[1].
Domande frequenti
Quale dialetto regex usa questo tester?
JavaScript (ECMAScript), tramite il RegExp integrato nel browser. Gran parte della sintassi è comune a PCRE, Python e Java, ma funzionalità come quantificatori possessivi, gruppi atomici e modificatori inline come (?i) non sono disponibili in JavaScript.
Perché il mio pattern trova una sola corrispondenza?
Senza il flag g (global), JavaScript si ferma alla prima corrispondenza. Attiva g per trovare tutte le occorrenze.
Come faccio riferimento ai gruppi nella sostituzione?
Usa $1, $2… per i gruppi numerati, $<name> per i gruppi con nome, $& per l'intera corrispondenza e $$ per un simbolo del dollaro letterale.
Perché il tester si è fermato per timeout?
Il pattern ha impiegato più di un secondo sul tuo input, il che indica quasi sempre un backtracking catastrofico. Cerca quantificatori annidati come (x+)+ o alternative sovrapposte come (a|a)* e riscrivili in modo che ogni carattere possa corrispondere in un solo modo.
I miei dati di test vengono inviati da qualche parte?
No. La ricerca avviene in locale in un Web Worker nel tuo browser. Pattern e testo vengono salvati solo nel tuo browser, così li ritrovi quando torni.