Regex Tester per JavaScript

Scrivi un'espressione regolare e vedi ogni corrispondenza evidenziata mentre digiti, con gruppi di cattura, anteprima della sostituzione e una libreria di pattern pronti.

Funziona nel browserNessuna registrazioneNessun caricamento

Corrispondenze evidenziate

    
Usa $1, $<name>, $& (intera corrispondenza)
Dettagli corrispondenze
#IndiceCorrispondenzaGruppi
Cheat sheet regex
.Qualsiasi carattere tranne a capo (qualsiasi con s)
\d \w \sCifra, carattere di parola, spazio
\D \W \SNon cifra, non parola, non spazio
[abc] [^abc]Uno tra / nessuno tra a, b, c
[a-z0-9]Intervallo di caratteri
\p{L} \p{N}Lettera / numero Unicode (richiede u)
^ $Inizio / fine dell'input (della riga con m)
\b \BConfine di parola / non confine
* + ?0 o più, 1 o più, 0 o 1
{n} {n,} {n,m}Esattamente n, almeno n, tra n e m
*? +? ??Lazy (il meno possibile)
a|ba oppure b
(…)Gruppo di cattura, richiamato come $1
(?<name>…)Gruppo con nome, $<name>
(?:…)Gruppo non catturante
\1 \k<name>Backreference
(?=…) (?!…)Lookahead / lookahead negativo
(?<=…) (?<!…)Lookbehind / lookbehind negativo
\. \* \\Caratteri letterali con escape
\n \t \rA capo, tab, ritorno a capo
\uFFFFCode unit Unicode
\u{1F600}Code point (richiede u)
$&Intera corrispondenza in una sostituzione
$` $'Testo prima / dopo la corrispondenza

Come usare Regex Tester

  1. Inserisci il pattern tra le barre, senza le / esterne.
  2. Attiva o disattiva flag come g (tutte le corrispondenze), i (ignora maiuscole/minuscole) e m (multiriga).
  3. Incolla il testo di prova. Le corrispondenze vengono evidenziate a destra ed elencate sotto con indice e gruppi di cattura.
  4. Spunta Sostituisci e inserisci una sostituzione come $1 o $<name> per vedere l'anteprima di String.replace.
  5. 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

FlagNomeEffetto
gglobalTrova tutte le corrispondenze invece di fermarsi alla prima.
iignoreCaseLe lettere corrispondono indipendentemente da maiuscole e minuscole.
mmultiline^ e $ corrispondono all'inizio e alla fine di ogni riga.
sdotAll. corrisponde anche agli a capo.
uunicodeTratta il pattern come code point; abilita \p{…} e \u{…}.
ystickyCerca corrispondenze solo nella posizione lastIndex corrente.
dhasIndicesRiporta 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.

Strumenti correlati