Što je ovaj alat?
Regularni izraz (regex) je kompaktan jezik uzoraka za pronalaženje, provjeru i izdvajanje teksta: uzorak za e-poštu može provjeriti unos u obrascu, \d{4}-\d{2}-\d{2} pronalazi datume, a hvatajuće grupe izdvajaju dijelove koji su vam potrebni. Gotovo svaki programski jezik i uređivač podržava regex.
Ovaj alat za testiranje koristi JavaScript regex modul — isti onaj koji se izvršava u Node.js-u i svakom pregledniku — pa se uzorci koje ovdje izradite ponašaju identično u vašem JavaScript/TypeScript kodu. Većina uzoraka radi i nepromijenjena u Pythonu, Javi i Go-u.
Zašto ga koristiti?
- Povratna informacija uživo: podudaranja se ističu žutom bojom dok tipkate uzorak.
- Hvatajuće grupe prikazane za svako podudaranje — vidite točno što će sadržavati $1 i $2.
- Puna podrška za oznake: g (sva podudaranja), i (zanemari velika/mala slova), m (višeredno), s (točka podudara i novi red), u (unicode).
- Jasne poruke o pogreškama kad uzorak ima sintaktičku grešku.
- Besplatno i privatno — uzorak i tekst nikad ne napuštaju vaš preglednik.
Kako ga koristiti
- Upišite svoj uzorak između dva znaka / (nema potrebe sami izbjegavati kose crte).
- Prilagodite oznake u malom okviru nakon druge crte / — zadana g pronalazi sva podudaranja.
- Zalijepite ispod svoj testni tekst.
- Podudaranja se ističu odmah; hvatajuće grupe navedene su ispod.
- Ako uzorak nije valjan, poruka o pogrešci objašnjava što je krivo.
Primjer
Ulaz
Uzorak: (\w+)@(\w+)\.com
Testni niz: Kontaktirajte alice@example.com ili bob@test.comIzlaz
✓ 2 podudaranja
#1 grupe: $1=alice $2=example
#2 grupe: $1=bob $2=testZagrade stvaraju hvatajuće grupe na koje se možete pozvati kao $1 i $2 u zamjenama.
Praktični savjeti
- Provjeravate unos e-pošte? ^[^\s@]+@[^\s@]+\.[^\s@]+$ je popustljiv uzorak koji hvata očite tipfelere bez odbijanja valjanih, ali neuobičajenih adresa — puna usklađenost s RFC 5322 zahtijeva biblioteku, ne jedan redak.
- Izdvajanje parametara upita iz URL-a: [?&]([^=]+)=([^&]*) s oznakom g, zatim čitajte $1/$2 po podudaranju umjesto ručnog dijeljenja po & i =.
- Namjeravate koristiti uzorak u .replace()? Prvo ga testirajte ovdje — ono što se ističe točno je ono što će .replace() dotaknuti, uključujući hvatajuće grupe.
- Parsirate višeredne zapisnike (podudaranje vremenske oznake na početku svakog retka)? Dodajte oznaku m tako da se ^ i $ sidre po retku umjesto po cijelom nizu.
- Kopirali ste uzorak iz Pythona ili PHP-a i ne podudara se ovdje? Provjerite ima li imenovanih grupa (?P<name>...) — JavaScript koristi (?<name>...), bez P — ili posesivnih kvantifikatora (++, *+), koji ne postoje u JavaScript regexu.
JavaScript testiranje regexa, ne generičko
Ovaj alat pokreće JavaScriptov ugrađeni RegExp modul — točnu putanju koda iza str.match(pattern) ili pattern.test(str) u konzoli preglednika ili Node.js-u. To se razlikuje od testiranja prema PCRE-u (koji koristi PHP, i prema kojem se mnogi "univerzalni" alati za testiranje regexa postavljaju po zadanome) ili Pythonovom re modulu: JavaScript nema posesivne kvantifikatore ni atomske grupe, a imenovane hvatajuće grupe koriste (?<name>...) umjesto PCRE/Pythonovog (?P<name>...).
Ako se spremate ugraditi uzorak u JS ili TypeScript — provjeru obrasca, usmjerivač ruta, parser zapisnika — testiranje ovdje znači nulti nesklad verzija: ono što se ističe na ovoj stranici točno je ono što new RegExp(pattern, flags) podudara u vremenu izvođenja.
Gdje se ovo uklapa u stvarne radne procese
Test regexa rijetko stoji sam za sebe. Uobičajeni slijed: potvrdite uzorak ovdje, pokrenite stvarni .replace() u svom kodu, zatim usporedite tekst prije/poslije kako biste bili sigurni da je zamjena učinila upravo ono što ste očekivali i ništa više.
Izdvajanje strukturiranih podataka hvatajućim grupama često se izravno nastavlja u JSON — formatirajte izdvojeni izlaz kako biste provjerili je li parsiran onako kako ste očekivali.
Često postavljana pitanja
Koju verziju regex-a koristi ovaj alat?
JavaScript (ECMAScript), modul u svakom pregledniku i Node.js-u. Osnovna sintaksa je prenosiva, no neke se značajke razlikuju među jezicima — npr. podrška za lookbehind i sintaksa imenovanih grupa razlikuju se u Pythonu i Javi.
Zašto moj uzorak pronalazi samo prvo podudaranje?
Nedostaje oznaka g (globalno). Bez g, regex staje nakon prvog podudaranja. Ovaj alat po zadanome koristi g — provjerite niste li je uklonili.
Zašto se . ne podudara s prijelomima retka u mom tekstu?
Po zadanome, . se podudara sa svakim znakom osim novog retka. Dodajte oznaku s (dotall) da se . podudara i s novim retcima, ili koristite [\s\S] kao prenosivu alternativu.
Što znače rezultati hvatajućih grupa?
Svaki par zagrada u vašem uzorku hvata tekst koji je podudario. $1 je prva grupa, $2 druga i tako dalje — na njih se pozivate u operacijama zamjene i kodu za izdvajanje.
Zašto je moj regex spor ili se zamrzava?
Vjerojatno je riječ o katastrofalnom vraćanju unatrag (backtracking), uzrokovanom ugniježđenim kvantifikatorima poput (a+)+ na tekstu koji se ne podudara. Prepišite uzorak kako biste izbjegli dvosmisleno ponavljanje. Ovaj alat ograničava se na 1000 podudaranja radi odzivnosti.