CodeKitHub
Tekstitööriistad

Regexi testija veebis

Viimati uuendatud:

Regexi testija lubab kirjutada regulaaravaldise ja näha selle vastavust päris tekstile koheselt, koos püüdegruppide ja lippudega, mis kuvatakse kirjutamise ajal — see tööriist käivitab JavaScripti mootorit, mida kirjeldab MDN-i regulaaravaldiste juhend, sama süntaks, mida kasutavad Node.js ja iga brauser. Suurepärane mustrite ehitamiseks ja silumiseks enne koodi kirjutamist.

//

    Mis see tööriist on?

    Regulaaravaldis (regex) on kompaktne mustrikeel teksti leidmiseks, valideerimiseks ja väljavõtmiseks: e-posti muster saab valideerida vorminvestimist, \d{4}-\d{2}-\d{2} leiab kuupäevi ja püüdegrupid tõmbavad välja just need osad, mida vajad. Peaaegu iga programmeerimiskeel ja tekstiredaktor toetab regexit.

    See testija kasutab JavaScripti regex-mootorit — sama, mis töötab Node.js-is ja igas brauseris —, seega siin loodud mustrid käituvad identselt su JavaScripti/TypeScripti koodis. Enamik mustreid töötab muutmata kujul ka Pythonis, Javas ja Go-s.

    Miks seda kasutada?

    • Reaalajas tagasiside: vasted tõstetakse kollasega esile mustri kirjutamise ajal.
    • Püüdegrupid kuvatakse iga vaste kohta — näe täpselt, mis jääb $1 ja $2 sisse.
    • Täielik lippude tugi: g (kõik vasted), i (tõstutundetu), m (mitmerealine), s (punkt vastab reavahetusele), u (unicode).
    • Selged veateated, kui mustris on süntaksiviga.
    • Tasuta ja privaatne — muster ja tekst ei lahku kunagi su brauserist.

    Kuidas kasutada

    1. Kirjuta oma muster kahe / märgi vahele (kaldjooni endal varjestama ei pea).
    2. Kohanda lippe väikeses kastis pärast teist /-i — vaikimisi g leiab kõik vasted.
    3. Kleebi oma testtekst alla.
    4. Vasted tõstetakse kohe esile; püüdegrupid on loetletud allpool.
    5. Kui muster on vigane, selgitab veateade, mis valesti on.

    Näide

    Sisend

    Muster: (\w+)@(\w+)\.com
    Testtekst: Contact alice@example.com or bob@test.com

    Tulemus

    ✓ 2 vastet
    #1 grupid: $1=alice  $2=example
    #2 grupid: $1=bob  $2=test

    Sulud loovad püüdegrupid, millele saad viidata kui $1 ja $2 asendustes.

    Praktilised nõuanded

    • Valideerid e-posti sisendit? ^[^\s@]+@[^\s@]+\.[^\s@]+$ on leebe muster, mis püüab kinni ilmsed kirjavead, ilma et lükkaks tagasi kehtivaid, kuid ebatavalisi aadresse — täielik RFC 5322 vastavus vajab teeki, mitte üherealist mustrit.
    • Võtad päringuparameetreid URL-ist välja: [?&]([^=]+)=([^&]*) koos g lipuga, seejärel loe $1/$2 iga vaste kohta, selle asemel et käsitsi tükeldada & ja = järgi.
    • Kavatsed kasutada mustrit .replace()-is? Testi seda enne siin — see, mis siin esile tõuseb, on täpselt see, mida .replace() puudutab, koos püüdegruppidega.
    • Parsid mitmerealisi logisid (vastad ajatemplile iga rea alguses)? Lisa m lipp, et ^ ja $ ankurduksid rea, mitte kogu stringi kaupa.
    • Kopeerisid mustri Pythonist või PHP-st ja see siin ei vasta? Kontrolli (?P<name>...) nimelisi gruppe — JavaScript kasutab (?<name>...), ilma P-ta — või possessiivseid kvantoreid (++, *+), mida JavaScripti regexis pole.

    JavaScripti regexi testija, mitte üldine

    See tööriist käivitab JavaScripti sisseehitatud RegExp-mootorit — täpselt sama koodirada, mis on str.match(pattern) või pattern.test(str) taga brauseri konsoolis või Node.js-is. See erineb testimisest PCRE vastu (mida kasutab PHP ja millele paljud "universaalsed" regexi testijad vaikimisi lähevad) või Pythoni re moodulist: JavaScriptis pole possessiivseid kvantoreid ega atomaargruppe ning nimelised püüdegrupid kasutavad (?<name>...), mitte PCRE/Pythoni (?P<name>...).

    Kui kavatsed mustri panna JS-i või TypeScripti koodi — vorminvestimine, marsruudi sobitaja, logiparser —, siis selle siin testimine tähendab null murraku-erinevusi: see, mis sellel lehel esile tõuseb, on täpselt see, millele new RegExp(pattern, flags) käiku minnes vastab.

    Kuhu see päris töövoogudesse sobitub

    Regexi test seisab harva üksinda. Tavaline järjekord: kinnita muster siin, käivita tegelik .replace() oma koodis ja seejärel võrdle enne/pärast teksti erinevust, et veenduda, et asendus tegi täpselt seda, mida ootasid, ja mitte midagi muud.

    Struktureeritud andmete väljavõtmine püüdegruppidega läheb sageli otse JSON-i — vormista väljavõetud tulemus, et kontrollida, kas see parsiti nii, nagu ootasid.

    Teksti võrdlus (diff) · JSON vormindaja

    Korduma kippuvad küsimused

    Millist regexi murrakut see testija kasutab?

    JavaScripti (ECMAScript) mootorit, mis töötab igas brauseris ja Node.js-is. Põhisüntaks on ülekantav, kuid mõned omadused erinevad keeleti — nt lookbehind tugi ja nimeliste gruppide süntaks erinevad Pythonis ja Javas.

    Miks minu muster leiab ainult esimese vaste?

    Puudu on g (globaalne) lipp. Ilma g-ta peatub regex pärast esimest vastet. See tööriist kasutab vaikimisi g-d — kontrolli, et sa poleks seda eemaldanud.

    Miks . ei vasta minu reavahetustele?

    Vaikimisi vastab . mistahes märgile peale reavahetuse. Lisa s lipp (dotall), et . vastaks ka reavahetustele, või kasuta [\s\S]-i ülekantava alternatiivina.

    Mida tähendavad püüdegruppide tulemused?

    Iga sulgude paar su mustris püüab kinni teksti, millele see vastas. $1 on esimene grupp, $2 teine ja nii edasi — nendele viitad asendamise ja väljavõtmise koodis.

    Miks on mu regex aeglane või hangub?

    Tõenäoliselt on põhjuseks katastroofiline tagasijälitamine (backtracking), mille põhjustavad pesastatud kvantorid nagu (a+)+ mittevastaval sisendil. Kirjuta muster ümber, et vältida mitmetähenduslikku korduvust. See tööriist piirab tulemuse 1000 vastega, et püsida kiirena.

    Seotud tööriistad