Tester regex

Inserisci un pattern, scegli i flag, incolla il testo da testare: il tester regex mostra ogni corrispondenza con il suo indice, il contenuto dei gruppi di cattura numerati e con nome e spiega ogni parte del pattern in italiano. Il confronto usa il motore JavaScript (ECMAScript) del tuo browser.

Inseriscila senza le barre, ad es. \d+ invece di /\d+/. Il pattern fa parte del link e puo essere condiviso – il testo di prova no.
I dati inseriti vengono salvati solo in questo browser.

Il testo su cui cercare. Resta nel tuo browser e non viene incluso nel link.

Il tuo testo resta nel browser: non viene inviato, non viene salvato e non compare nell’indirizzo della pagina.

Risultato

Risultato
2 corrispondenze
Corrispondenze
N.IndiceLunghezzaCorrispondenza
128102026-09-27
259102026-10-15
Gruppi per corrispondenza
N.GruppoNomeValore
11jahr2026
12monat09
13tag27
21jahr2026
22monat10
23tag15
Pattern spiegato
TokenSignificato
(?<jahr>inizio del gruppo 1, chiamato “jahr”
› \duna cifra 0–9
› {4}l’elemento precedente esattamente 4 volte
)fine del gruppo
-il testo letterale “-”
(?<monat>inizio del gruppo 2, chiamato “monat”
› \duna cifra 0–9
› {2}l’elemento precedente esattamente 2 volte
)fine del gruppo
-il testo letterale “-”
(?<tag>inizio del gruppo 3, chiamato “tag”
› \duna cifra 0–9
› {2}l’elemento precedente esattamente 2 volte
)fine del gruppo
Come letterale JavaScript
/(?<jahr>\d{4})-(?<monat>\d{2})-(?<tag>\d{2})/g

Come si calcola

Questo tester regex usa la variante JavaScript delle espressioni regolari definita dallo standard ECMA-262 e implementata dal tuo browser. Un pattern che funziona qui funziona esattamente allo stesso modo in String.prototype.match, matchAll, replace e RegExp.prototype.test – in Chrome, Firefox, Safari e Node.js.

Come leggere il risultato

I flag

g trova tutte le corrispondenze invece della sola prima, i ignora maiuscole/minuscole, m fa funzionare ^ e $ per ogni riga, s fa sì che il punto corrisponda anche agli a capo. u tratta emoji e altri caratteri fuori dal Basic Multilingual Plane come un singolo carattere e abilita le proprietà Unicode come \p{L} (qualsiasi lettera, incluse è o ñ). v è la versione più recente di u con operazioni tra insiemi come [\p{L}--[a-z]]; u e v non si possono combinare. y (“sticky”) trova solo corrispondenze consecutive senza spazi tra loro.

Protezione da loop infiniti e blocchi

Pattern come a* o \b possono produrre corrispondenze vuote. Come JavaScript stesso, il tester avanza allora di un carattere (un intero code point con u/v), quindi non si crea un loop infinito. Vengono cercate al massimo 1.000 corrispondenze.

Il pericolo maggiore è il backtracking catastrofico (ReDoS): quantificatori annidati come (a+)+$ provano un numero esponenziale di combinazioni su una stringa che non corrisponde – 30 caratteri possono tenere occupato il motore per minuti. Per questo la ricerca gira in un thread separato in background e viene fermata dopo 2 secondi; la pagina resta reattiva. Evita questi pattern anche nel tuo codice, soprattutto sull’input dell’utente.

Differenze rispetto ad altre varianti di regex

PCRE (PHP), Python, Java e .NET differiscono nei dettagli: JavaScript non ha quantificatori possessivi (a++), né gruppi atomici, né le ancore \A o \Z; \w copre solo A–Z, a–z, 0–9 e il trattino basso – per le lettere accentate usa \p{L} con il flag u.

Il tuo testo di prova non viene inviato, non viene salvato e non finisce nel link – solo il pattern e i flag lo fanno.

Domande frequenti

Come si testa un’espressione regolare?

Digita il pattern senza barre nel campo in alto, seleziona i flag necessari e incolla il testo. Tutte le corrispondenze vengono subito evidenziate nel testo ed elencate con il loro indice; sotto vedi cosa ha catturato ogni gruppo.

Perché \w non corrisponde alle lettere accentate?

In JavaScript \w rappresenta solo A–Z, a–z, 0–9 e _. Per le lettere di qualsiasi lingua usa \p{L} con il flag u, ad es. [\p{L}\d_]+ per una parola come “città”.

Qual è la differenza tra greedy e lazy?

I quantificatori greedy (*, +, {2,}) catturano più testo possibile, quelli lazy con un punto interrogativo finale (*?, +?) il meno possibile. Su “<b>x</b>”, <.+> corrisponde all’intera stringa, <.+?> solo a “<b>”.

Come si assegna un nome a un gruppo di cattura?

Usa (?<nome>…). Nel codice lo leggi con match.groups.nome, in una stringa di sostituzione con $<nome>, e all’interno del pattern con il backreference \k<nome>.

Perché la ricerca è stata interrotta?

Ha impiegato più di 2 secondi – di solito per backtracking catastrofico con quantificatori annidati come (\w+)*. Semplifica il pattern: non annidare i quantificatori, rendi inequivocabili le alternative e ancoralo con ^ e $.

Il risultato vale anche per PHP o Python?

Per i pattern semplici di solito sì, ma è garantito solo per JavaScript. PHP (PCRE) e Python supportano sintassi aggiuntive come i quantificatori possessivi o \A, e Python scrive tradizionalmente i gruppi con nome come (?P<nome>…).

Fonti e riferimenti normativi

Aggiornato al:

Strumenti correlati