Come funziona regex nel tuo browser?
Ogni runtime JavaScript include un motore nativo di espressioni regolari — new RegExp(pattern, flags) compila il tuo pattern, poi metodi come String.prototype.match, String.prototype.replace e RegExp.prototype.exec lo eseguono su qualsiasi stringa di input. Questo tester avvolge quel motore in un'interfaccia che ti permette di modificare, eseguire e ispezionare pattern senza lasciare il browser. Nulla di ciò che digiti — pattern, flag, stringa di test o sostituzione — viene inviato attraverso la rete.
Come funziona il tester di regex?
La pipeline è composta da pochi brevi passaggi, tutti eseguiti lato client a ogni battitura (con debounce di 150 ms per mantenere fluida la digitazione):
- Il corpo del tuo pattern viene letto dal campo qui sopra (senza delimitatori
/iniziali o finali — sono decorativi). I flag selezionati vengono concatenati in una stringa di flag comegiogimsuy. new RegExp(patternBody, flags)compila il pattern. Se il motore lancia unSyntaxError(per es. una parentesi non bilanciata o un escape non valido), il messaggio viene mostrato sopra la stringa di test e l'elenco delle corrispondenze viene azzerato. L'errore di compilazione è il veroerr.messagedi V8 / SpiderMonkey / JavaScriptCore, quindi corrisponde a ciò che vedresti nelle DevTools.- Per l'elenco delle corrispondenze, il tester enumera sempre con un flag global sintetico — così, anche se disattivi
g, l'elenco continua a mostrare ogni corrispondenza. La protezione standard contro le corrispondenze a larghezza zero (if (m.index === rx.lastIndex) rx.lastIndex++) evita che il ciclo si avviti su pattern che corrispondono alla stringa vuota. La modalità Sostituzione rispetta i tuoi flag effettivi, così$&si comporta comeString.prototype.replace. - Tra ogni iterazione il tester verifica
performance.now() - starte si interrompe quando sono trascorsi 50 ms. Questo protegge dal backtracking catastrofico su input come(a+)+$contro una lunga sequenza dia— la scheda altrimenti si bloccherebbe. La protezione è best-effort: un pattern patologico a corrispondenza singola può comunque consumare tempo all'interno di una singola chiamataexec. Se accade, ricarica la scheda e riscrivi il pattern con un quantificatore non goloso o uno stile possessivo atomico (per es.[^x]*x). - La stringa di test viene suddivisa in segmenti in corrispondenza dell'intervallo di ogni match e i segmenti corrispondenti vengono racchiusi in elementi
<mark class="rx-match rx-cap-N">, doveNscorre ciclicamente sei colori della palette per rendere facili da distinguere a colpo d'occhio le corrispondenze adiacenti. I gruppi numerati (m[1],m[2], …) e nominati (m.groups) di ogni corrispondenza vengono mostrati come righe etichettate sotto; se il flagdè attivo, vengono mostrati anche gli indici[start, end]per gruppo.
Perché usare questo tester di regex?
- Privacy: ogni pattern, stringa di test e sostituzione viene eseguito nel tuo browser tramite il motore JavaScript RegExp integrato. Nulla esce dalla scheda — importante quando l'input è un log cliente, un pattern di credenziali trapelate o qualsiasi altra cosa che non incolleresti in un playground regex SaaS ospitato.
- Sapore onesto: il tester espone esattamente il motore regex che Node.js, Chrome, Safari, Firefox e ogni validatore di form basato su browser eseguono. Non c'è alcuno strato di traduzione in stile Perl che nasconde differenze sottili — ciò che funziona qui funziona nel tuo codice.
- Debug di cattura e gruppi nominati: ogni gruppo numerato (
$1,$2, …) e nominato ($<year>) è mostrato per ogni corrispondenza, così puoi costruire un parser e leggere gli slot senza tirare a indovinare. La modalità Sostituzione ti consente di combinare i gruppi liberamente —$2-$1scambia i primi due slot,$<name>inserisce uno slot nominato e$&rimanda l'intera corrispondenza. - Protezione dal backtracking catastrofico: un tetto di 50 ms sull'enumerazione interrompe pattern patologici come
(a+)+$prima che congelino la scheda. Vedi un errore esplicativo invece di un browser bloccato, e la pagina si riprende immediatamente.
Quali sono le applicazioni comuni di un tester di regex?
Le espressioni regolari compaiono nello sviluppo web, nella sicurezza e nel lavoro sui dati — questo tester punta ai casi d'uso più comuni:
- Validazione di form: prototipa un pattern per email, telefono o CAP, incolla input di esempio nella stringa di test e conferma che ogni caso positivo corrisponda e ogni caso negativo no, prima di portare il pattern in produzione.
- Scraping di log: incolla un blocco di output NGINX, applicativo o di audit, scrivi un pattern con gruppi nominati per le parti che ti interessano (
(?<ip>…) (?<path>…)) e leggi gli slot catturati per corrispondenza per confermare che il tuo parser è corretto. - Cerca-e-sostituisci per refactor: usa la modalità Sostituzione per riscrivere identificatori in uno snippet —
(\w+)\.set(\w+)\(→$1.$2 =trasforma le chiamate setter in assegnazioni di proprietà, e l'anteprima dal vivo mostra il risultato prima di applicarlo in un codemod.
Che aspetto ha un esempio di regex?
Prendi il pattern (\d{4})-(\d{2})-(\d{2}) con il flag g, eseguito contro la stringa di test release 2025-11-15, prerelease 2026-05-25. Il motore trova due corrispondenze. La prima è 2025-11-15 con gruppo 1 = 2025, gruppo 2 = 11, gruppo 3 = 15. La seconda è 2026-05-25 con la stessa forma di gruppi. In modalità Sostituzione, il modello $3/$2/$1 riscrive entrambe le date in 15/11/2025 e 25/05/2026 — una conversione ISO → DMY con un solo pattern che puoi verificare visivamente prima di collegarlo in uno script.
Usa questo tester come la via veloce per ogni lavoro su regex — costruzione, debug o riscrittura di pattern. Tutto viene eseguito localmente; nulla viene registrato; il motore regex è quello che il tuo browser include, quindi il comportamento corrisponde a ciò che il codice di produzione vedrà a runtime.