Kaj je to orodje?
Regularni izraz (regex) je kompakten jezik vzorcev za iskanje, preverjanje in izluščanje besedila: vzorec za e-pošto lahko preveri vnos v obrazcu, \d{4}-\d{2}-\d{2} najde datume, zajemne skupine pa izluščijo dele, ki jih potrebuješ. Regex podpira skoraj vsak programski jezik in urejevalnik.
Ta tester uporablja JavaScriptov regex pogon — istega, ki teče v Node.js in vsakem brskalniku — zato se vzorci, ki jih zgradiš tukaj, obnašajo enako v tvoji JavaScript/TypeScript kodi. Večina vzorcev nespremenjeno deluje tudi v Pythonu, Javi in Go.
Zakaj ga uporabiti?
- Sprotne povratne informacije: ujemanja se med tipkanjem vzorca obarvajo rumeno.
- Zajemne skupine so prikazane za vsako ujemanje — vidiš točno, kaj bosta vsebovala $1 in $2.
- Popolna podpora zastavic: g (vsa ujemanja), i (ne loči velikih/malih črk), m (več vrstic), s (pika ujema tudi novo vrstico), u (unicode).
- Jasna sporočila o napakah, kadar vzorec vsebuje sintaktično napako.
- Brezplačno in zasebno — vzorec in besedilo nikoli ne zapustita tvojega brskalnika.
Kako ga uporabljati
- Vpiši svoj vzorec med dvema znakoma / (poševnic ti ni treba sam ubežati).
- Prilagodi zastavice v majhnem polju za drugo poševnico — privzeti g najde vsa ujemanja.
- Prilepi svoje testno besedilo spodaj.
- Ujemanja se takoj obarvajo; zajemne skupine so naštete spodaj.
- Če je vzorec neveljaven, sporočilo o napaki pojasni, kaj je narobe.
Primer
Vnos
Vzorec: (\w+)@(\w+)\.com
Testno besedilo: Kontakt alice@example.com ali bob@test.comRezultat
✓ 2 ujemanji
#1 skupini: $1=alice $2=example
#2 skupini: $1=bob $2=testOklepaji ustvarijo zajemne skupine, na katere se lahko sklicuješ kot $1 in $2 pri zamenjavah.
Praktični nasveti
- Preverjaš vnos e-pošte? ^[^\s@]+@[^\s@]+\.[^\s@]+$ je popustljiv vzorec, ki ujame očitne tipkarske napake, ne da bi zavrnil veljavne, a nenavadne naslove — popolna skladnost z RFC 5322 zahteva knjižnico, ne enovrstičnega izraza.
- Izluščanje parametrov poizvedbe iz URL-ja: [?&]([^=]+)=([^&]*) z zastavico g, nato pa preberi $1/$2 za vsako ujemanje, namesto ročnega deljenja po & in =.
- Boš vzorec uporabil v .replace()? Testiraj ga najprej tukaj — kar se obarva, je natanko to, česar se bo dotaknil .replace(), vključno z zajemnimi skupinami.
- Razčlenjuješ večvrstične dnevnike (ujemanje časovnega žiga na začetku vsake vrstice)? Dodaj zastavico m, da se ^ in $ sidrata na vsako vrstico posebej, namesto na celoten niz.
- Kopiral si vzorec iz Pythona ali PHP-ja in se tukaj ne ujema? Preveri poimenovane skupine (?P<name>...) — JavaScript uporablja (?<name>...), brez P — ali posesivne kvantifikatorje (++, *+), ki v JavaScript regexu ne obstajajo.
Tester za JavaScript regex, ne splošen
To orodje poganja vgrajen JavaScriptov RegExp pogon — natanko tisto kodno pot, ki stoji za str.match(pattern) ali pattern.test(str) v konzoli brskalnika ali Node.js. To se razlikuje od testiranja proti PCRE (kar uporablja PHP in kar privzeto uporabljajo številni "univerzalni" testerji regexov) ali Pythonovemu modulu re: JavaScript nima posesivnih kvantifikatorjev ali atomskih skupin, poimenovane zajemne skupine pa uporabljajo (?<name>...) namesto PCRE/Pythonovega (?P<name>...).
Če boš vzorec kmalu uporabil v JS ali TypeScriptu — preverjanje obrazca, ujemanje poti, razčlenjevanje dnevnika — testiranje tukaj pomeni ničelno neujemanje različic: kar se obarva na tej strani, je natanko to, kar ujame new RegExp(pattern, flags) med izvajanjem.
Kje se to umešča v resnične delovne postopke
Test regexa redko stoji sam. Običajno zaporedje: potrdi vzorec tukaj, poženi dejanski .replace() v svoji kodi, nato primerjaj besedilo pred/po, da se prepričaš, da je zamenjava naredila natanko to, kar si pričakoval, in nič drugega.
Izluščanje strukturiranih podatkov z zajemnimi skupinami pogosto vodi naravnost v JSON — oblikuj izluščeni izpis, da preveriš, ali se je razčlenil, kot si pričakoval.
Pogosta vprašanja
Katero različico regexa uporablja ta tester?
JavaScript (ECMAScript), pogon v vsakem brskalniku in Node.js. Osnovna sintaksa je prenosljiva, a nekatere funkcije se med jeziki razlikujejo — npr. podpora za lookbehind in sintaksa poimenovanih skupin se v Pythonu in Javi razlikujeta.
Zakaj moj vzorec najde samo prvo ujemanje?
Manjka zastavica g (global). Brez g se regex ustavi po prvem ujemanju. To orodje ima g privzeto vklopljen — preveri, da je nisi odstranil.
Zakaj . ne ujame prelomov vrstic?
Privzeto . ujame vsak znak razen novih vrstic. Dodaj zastavico s (dotall), da . ujame tudi nove vrstice, ali kot prenosljivo alternativo uporabi [\s\S].
Kaj pomenijo rezultati zajemnih skupin?
Vsak par oklepajev v tvojem vzorcu zajame besedilo, ki se je ujelo. $1 je prva skupina, $2 druga in tako naprej — nanje se sklicuješ pri operacijah zamenjave in kodi za izluščanje.
Zakaj je moj regex počasen ali se zamrzne?
Verjetno gre za katastrofalno vračanje (backtracking), ki ga povzročijo gnezdeni kvantifikatorji, kot je (a+)+ na neujemajočem vnosu. Prepiši vzorec, da se izogneš dvoumnemu ponavljanju. To orodje se ustavi pri 1000 ujemanjih, da ostane odzivno.