Cum se folosește
- Scrie o expresie regulată în câmpul Model, fără slash-urile din jur.
- Bifează flagurile de care ai nevoie. g (global) găsește fiecare potrivire, nu doar prima.
- Lipește textul în care cauți. Potrivirile sunt evidențiate, iar fiecare este listată cu indexul și grupurile de captură.
- Opțional, introdu o înlocuire, de exemplu $2-$1, pentru a previzualiza rezultatul String.replace.
Cum funcționează
Testerul rulează modelul cu obiectul RegExp încorporat în browser, astfel că rezultatele sunt exact cele pe care le-ar produce codul JavaScript (ECMAScript) din acel browser. Alte limbaje folosesc variante diferite de regex: PCRE (PHP), modulul re din Python, Java și .NET acceptă funcționalități pe care JavaScript nu le are, precum cuantificatorii posesivi (a++), grupurile atomice ((?>…)), modificatorii inline ca (?i) și recursivitatea, și diferă în detalii precum ancorele \A și \Z. Testați un model în limbajul respectiv înainte de a vă baza pe el acolo. Lookbehind ((?<=…)), grupurile cu nume ((?<name>…)) și escape-urile de proprietăți Unicode (\p{L} cu flagul u) funcționează în toate browserele actuale.
Fără flagul g sau y este găsită doar prima potrivire, ca la RegExp.exec. Potrivirile de lungime zero, de exemplu ale lui ^ sau \b, sunt listate, dar nu sunt evidențiate; după una, căutarea avansează cu un caracter (un punct de cod cu flagul u), așa cum face String.matchAll. Grupurile de captură sunt afișate după număr și, dacă sunt definite, după nume; un grup care nu a participat la potrivire este marcat ca neavând valoare, ceea ce este diferit de o potrivire goală.
Unele modele, cum ar fi (a+)+$ pe o linie lungă fără potrivire, au nevoie de timp exponențial pentru a eșua (backtracking catastrofal). Pentru a reduce riscul, căutarea începe la un moment după ce vă opriți din tastat, sunt căutate doar primele 100.000 de caractere din text și sunt colectate cel mult 1.000 de potriviri. Un model patologic poate totuși face fila să nu răspundă o perioadă; dacă se întâmplă, simplificați modelul sau scurtați textul.
Exemple
Extragerea datelor calendaristice
Modelul (\d{4})-(\d{2})-(\d{2}) cu flagul g aplicat textului „Due 2026-03-15, paid 2026-04-02” găsește două potriviri. Grupul 1 este anul; înlocuirea $3.$2.$1 transformă textul în „Due 15.03.2026, paid 02.04.2026”.
Grupuri cu nume pentru cod lizibil
Modelul (?<key>\w+)=(?<value>[^&]*) aplicat șirului de interogare a=1&b=two listează cheia și valoarea pentru fiecare pereche, ceea ce corespunde cu ceea ce returnează match.groups.key și match.groups.value în JavaScript.
Căutare fără distincție între majuscule și minuscule pe mai multe linii
Modelul ^error:.* cu flagurile g, i și m potrivește fiecare linie a unui jurnal care începe cu Error:, ERROR: sau error:, deoarece m face ca ^ să potrivească începutul fiecărei linii.
Întrebări frecvente
Va funcționa regex-ul meu la fel în Python, PHP sau Java?
Nu neapărat. Acest instrument folosește motorul JavaScript. Sintaxa de bază este comună, dar funcții precum cuantificatorii posesivi, grupurile atomice, flagurile inline ca (?i) și unele secvențe escape există doar în alte dialecte, iar câteva se comportă diferit. Testează întotdeauna în limbajul țintă.
De ce este găsită doar o singură potrivire?
Flagul g (global) este dezactivat. Fără el, JavaScript returnează doar prima potrivire. Bifează g pentru a le găsi pe toate.
Ar trebui să introduc slash-urile în jurul modelului?
Nu. Introdu doar modelul, de exemplu \d+ în loc de /\d+/g, și alege flagurile cu ajutorul casetelor de selectare. Forma literală JavaScript este afișată sub rezultate pentru a o copia în cod.
De ce a devenit pagina lentă cu modelul meu?
Cuantificatorii îmbricați, cum ar fi (a+)+ sau (.*)*, pot forța motorul să încerce un număr exponențial de variante atunci când nu există nicio potrivire. Fă modelul mai specific, de exemplu înlocuiește .* cu [^,]*, sau folosește ancore. Testerul limitează textul la 100.000 de caractere pentru a reduce impactul.
Confidențialitate
Modelul și textul tău sunt procesate doar în browserul tău, de motorul JavaScript al acestuia. Nimic nu este încărcat, stocat sau inclus în analize.