PK Systems PK Systems
Strumenti per sviluppatori

Tester di Regex

Costruisci, testa e debugga espressioni regolari JavaScript con evidenziazione live, modalità sostituzione e preset pronti all'uso.

Tester di Regex

Output

Anteprima evidenziata
Match

    Cos'è un'espressione regolare?

    Un'espressione regolare (regex) è un piccolo linguaggio di pattern per cercare e trasformare testo. Alimenta il find-in-files, l'analisi dei log, le regole di validazione, i lexer e la maggior parte delle funzioni cerca-e-sostituisci negli editor. Questo strumento costruisce un RegExp live nel tuo browser, lo esegue contro la stringa di test e mostra ogni match più un'evidenziazione inline. Usa il motore JavaScript standard, quindi ciò che funziona qui funziona allo stesso modo in Node.js e in tutti i browser moderni.

    Come usare il tester

    Scrivi il tuo pattern (senza i delimitatori /.../) nel campo pattern, scegli i flag che ti servono e incolla sotto il testo di test. I match vengono evidenziati nel pannello di anteprima ed elencati singolarmente con la loro posizione carattere. Attiva Modalità sostituzione per vedere il risultato di String.prototype.replace() con la tua stringa di sostituzione — usa $& per l'intero match e $1, $2 per i gruppi di cattura. I chip dei preset caricano nei campi pattern comuni così puoi modificare invece di partire da zero.

    Cheat sheet della regex

    I token più utili in un solo posto. La regex JavaScript segue la sintassi ECMAScript — vicina a PCRE ma con qualche assenza (niente quantificatori possessivi, niente pattern ricorsivi).

    Token Significato
    .Qualsiasi carattere (tranne il fine riga, a meno che il flag s sia attivo)
    \d \w \sCifra, carattere di parola (lettere/cifre/_), spazio
    ^ $Inizio della stringa, fine della stringa (per riga con il flag m)
    * + ?Zero o più, una o più, zero o una (greedy di default)
    {n,m}Da n a m ripetizioni
    [abc]Qualsiasi carattere nell'insieme; usa [^abc] per negare
    (...)Gruppo di cattura; usa (?:...) per un gruppo non catturante
    |Alternanza — match con un lato o con l'altro

    Domande frequenti

    Quale motore regex viene usato?
    Il motore JavaScript integrato del tuo browser — V8 in Chrome/Edge, SpiderMonkey in Firefox, JavaScriptCore in Safari. Tutti e tre implementano la specifica regex ECMAScript, quindi il comportamento è coerente tra browser e identico a Node.js. Funzionalità solo PCRE come pattern ricorsivi e quantificatori possessivi non sono supportate.
    Cosa significano i flag?
    g trova tutti i match (non solo il primo). i ignora maiuscole/minuscole. m fa sì che ^ e $ matchino inizio/fine riga. s permette a . di matchare anche i fine riga. u abilita la modalità Unicode completa (richiesta per le proprietà come \p{Letter}). y è sticky — i match devono iniziare esattamente a lastIndex.
    Qualcosa viene inviato a un server?
    No. Il pattern, la stringa di test e la sostituzione vengono tutti valutati in locale con new RegExp() e String.prototype.replace(). Apri DevTools > Network e verifica: non vengono fatte richieste mentre digiti. Sicuro per snippet di log, dati interni o qualsiasi cosa tu non incollerebbe in una sandbox regex cloud.
    Perché la mia regex è lenta o blocca la pagina?
    Backtracking catastrofico. Pattern con quantificatori annidati come (a+)+ o (.*)* possono girare per miliardi di passaggi su input che quasi corrispondono. Evita di annidare +/*; preferisci alternative in stile atomico come [^x]+ oppure ancora il pattern. Il tester si difende dai match fuori controllo con un limite di 50.000 iterazioni così la pagina non si blocca.
    Come uso i gruppi di cattura in modalità sostituzione?
    Avvolgi parti del tuo pattern tra parentesi — diventano gruppi numerati: $1, $2, ecc. Esempio: pattern (\w+)@(\w+) con sostituzione $2 / $1 scambia user e dominio in un'email. $& rappresenta l'intero match, $$ produce un $ letterale. I gruppi nominati (?<name>...) si possono usare come $<name>.
    Perché ^ e $ non matchano ogni riga?
    Per impostazione predefinita ^ matcha solo l'inizio assoluto della stringa di test e $ solo la fine assoluta — non ogni riga. Aggiungi il flag m (multiline) e matcheranno le interruzioni di riga. Se ti serve anche che . matchi i caratteri di fine riga (per esempio per catturare attraverso più righe), aggiungi il flag s (dotAll).