Preizkus regularnih izrazov
Sproti preizkusi regularne izraze JavaScripta z označenimi ujemanji, zajemalnimi skupinami, zamenjavo in razlago vsakega dela vzorca v preprostem jeziku.
| # | Mesto | Ujemanje | Skupine |
|---|
Razlaga vzorca
Opozorilo: ponovljena skupina vsebuje še en odprt kvantifikator, na primer (a+)+. Taki vzorci lahko pri besedilu, ki se skoraj ujema, potrebujejo eksponentni čas (katastrofalno vračanje).
Kako uporabljati preizkus regularnih izrazov
- Vzorec vpiši v Regularni izraz, brez obdajajočih poševnic. Poševnici in aktivne zastavice so prikazane okoli polja, kot v
/vzorec/g. - Obkljukaj potrebne Zastavice:
g(globalno),i(ne razlikuj velikosti črk),m(večvrstično),s(dotAll),u(unicode) aliy(lepljivo). - Besedilo za iskanje prilepi v Testno besedilo. Ujemanja so med tipkanjem označena, tabela pa navede vsako ujemanje z njegovim mestom in zajemalnimi skupinami.
- Če želiš preizkusiti zamenjavo, izpolni Zamenjava. Polje Rezultat po zamenjavi pokaže besedilo z zamenjanim vsakim ujemanjem, pripravljeno za kopiranje.
- Preberi Razlago vzorca, da preveriš, kaj počne vsak del tvojega regularnega izraza. Ne veš, kje začeti? Klikni Naloži primer.
Kaj prikaže preizkus
- Označena ujemanja: vsako ujemanje v testnem besedilu je označeno, tako da na prvi pogled vidiš, kaj se ujame in kaj ne.
- Tabela ujemanj: številka vsakega ujemanja, njegovo mesto (odmik znakov od začetka, štet od 0), ujeto besedilo in vrednost vsake zajemalne skupine. Imenovane skupine, kot je
(?<leto>\d{4}), se pojavijo pod svojim imenom, skupine, ki pri ujemanju niso sodelovale, pa so prikazane kot »(ni ujemanja)«. Navedenih je prvih 1000 ujemanj. - Zamenjava: besedilo zamenjave uporablja sintakso JavaScripta:
$1ali$2za oštevilčene skupine,$<ime>za imenovane skupine,$&za celotno ujemanje in$$za dobesedni znak dolarja. Brez zastavicegse zamenja samo prvo ujemanje. - Razlaga: vzorec je razdeljen na žetone (dobesedno besedilo, razredi znakov, sidra, skupine, kvantifikatorji, pogledi okoli, povratne reference), vsak s kratkim opisom. Gnezdene skupine so zamaknjene, kar močno olajša pregledovanje dolgih vzorcev.
Zastavice na kratko
| Zastavica | Učinek |
|---|---|
g |
Poišče vsa ujemanja, namesto da se ustavi pri prvem |
i |
Ne razlikuje med velikimi in malimi črkami |
m |
^ in $ se ujameta na začetku in koncu vsake vrstice |
s |
. ujame tudi prelome vrstic |
u |
Poln način Unicode: \u{…}, \p{…} in emoji se obravnavajo kot posamezni znaki |
y |
Lepljivo: vsako ujemanje se mora začeti natanko tam, kjer se je prejšnje končalo |
Katastrofalno vračanje
Nekateri vzorci potrebujejo eksponentni čas pri besedilu, ki se skoraj ujema. Klasičen primer je (a+)+$, preizkušen na dolgem nizu črk a, ki mu sledi b: pogon preizkusi vse načine razdelitve črk a med oba kvantifikatorja, preden obupa. Ta težava, znana kot ReDoS, je že podrla prave spletne strani.
To orodje tvoj brskalnik ščiti na tri načine. Ujemanje teče v delavcu v ozadju, ki se ustavi po 1,5 sekunde; testno besedilo je omejeno na 100 000 znakov; razlaga pa te opozori, kadar ponovljena skupina vsebuje še en odprt kvantifikator. Ko vzorec prekorači čas, ga napiši tako, da se lahko vsak znak ujame le na en način, na primer a+$ namesto (a+)+$.
Pogosta vprašanja
Katero različico regex to orodje uporablja?
Uporablja pogon JavaScripta (ECMAScript) v tvojem brskalniku, natanko tako kot new RegExp() in String.prototype.replace() v tvoji kodi. Večina sintakse je skupna s PCRE, Pythonom in Javo, nekatere možnosti pa se razlikujejo: posesivni kvantifikatorji in atomske skupine v JavaScriptu ne obstajajo, pogled nazaj pa podpirajo vsi sodobni brskalniki.
Zakaj moj vzorec najde samo eno ujemanje?
Zastavica g je izklopljena. Brez nje se JavaScript ustavi po prvem ujemanju, zamenjava pa spremeni samo to.
Kako ujamem dobesedno piko, oglati oklepaj ali vprašaj?
Označi ga s poševnico nazaj: \., \[, \?. Razlaga prikaže ubežne znake kot »(ubežni)«, da jih lahko preveriš.
Ali se moje besedilo kam pošilja?
Ne. Vzorec in besedilo se obdelata samo v tvojem brskalniku, zato je to orodje varno za dnevniške datoteke ali podatke z osebnimi podatki.
Zakaj se mesto razlikuje od stolpca v mojem urejevalniku?
Mesta štejejo znake od 0 čez vse vrstice, kot to počne match.index v JavaScriptu. Prelom vrstice šteje za en znak, emoji zunaj osnovne večjezične ravnine pa za dva.
Sorodna orodja
- Oblikovalnik in preverjevalnik JSON Brezplačen oblikovalnik in preverjevalnik JSON, ki v brskalniku polepša, zmanjša in preveri JSON, sintaksne napake pa javi z vrstico in stolpcem.
- Kodiranje in dekodiranje URL Brezplačno kodiranje in dekodiranje URL. Odstotno kodiraj parametre poizvedbe ali celotne URL, dekodiraj %XX in obravnavaj + kot presledek v brskalniku.
- Generator zgoščenih vrednosti (hash) Ustvari zgoščene vrednosti MD5, SHA-1, SHA-256 in SHA-512 za besedilo ali datoteke poljubne velikosti in preveri kontrolne vsote. Deluje v brskalniku.