Utilia

Regex testuoklis

Testuok JavaScript reguliariąsias išraiškas gyvai: paryškinti atitikmenys, fiksuojančios grupės, pakeitimas ir paprastas kiekvieno elemento paaiškinimas.

Vėliavėlės

Atitikmenys
#PozicijaAtitikmuoGrupės

Šablono paaiškinimas

    Kaip naudotis regex testuokle

    1. Įrašyk šabloną į lauką Reguliarioji išraiška, be apgaubiančių pasvirųjų brūkšnių. Pasvirieji brūkšniai ir aktyvios vėliavėlės rodomi aplink lauką, pavyzdžiui, /pattern/g.
    2. Pažymėk reikiamas Vėliavėlės: g (globali), i (nepaisyti raidžių registro), m (daugiaeilutė), s (dotAll), u (unicode) arba y (lipni).
    3. Įklijuok ieškomą tekstą į Bandomasis tekstas. Atitikmenys paryškinami, kai renki, o lentelėje išvardytas kiekvienas atitikmuo su pozicija ir fiksuojančiomis grupėmis.
    4. Norint išbandyti pakeitimą, užpildyk Pakeitimas. Laukelyje Rezultatas po pakeitimo matomas tekstas, kuriame pakeisti visi atitikmenys, paruoštas kopijuoti.
    5. Perskaityk Šablono paaiškinimas, kad patikrintum, ką daro kiekviena regex dalis. Nežinai, nuo ko pradėti? Spustelėk Įkelti pavyzdį.

    Ką rodo testuoklė

    • Paryškinti atitikmenys: kiekvienas bandomojo teksto atitikmuo pažymimas, todėl iškart matai, kas pagaunama, o kas praleidžiama.
    • Atitikmenų lentelė: kiekvieno atitikmens numeris, jo pozicija (simbolių poslinkis nuo pradžios, skaičiuojant nuo 0), atitikęs tekstas ir kiekvienos fiksuojančios grupės reikšmė. Įvardytos grupės, pavyzdžiui, (?<year>\d{4}), rodomos pagal pavadinimą, o grupės, kurios atitikime nedalyvavo, rodomos kaip „(neatitiko)“. Išvardijama pirmieji 1000 atitikmenų.
    • Pakeitimas: pakeitimo tekstas naudoja JavaScript sintaksę: $1 ar $2 numeruotoms grupėms, $<name> įvardytoms grupėms, $& visam atitikmeniui ir $$ pažodiniam dolerio ženklui. Be g vėliavėlės pakeičiamas tik pirmas atitikmuo.
    • Paaiškinimas: šablonas suskaidomas į elementus (pažodinis tekstas, simbolių klasės, inkarai, grupės, kvantifikatoriai, žvilgsniai, atgalinės nuorodos), kiekvienas su trumpu aprašu. Įdėtos grupės įtraukiamos, todėl ilgus šablonus peržiūrėti daug lengviau.

    Trumpai apie vėliavėles

    Vėliavėlė Poveikis
    g Randa visus atitikmenis, o ne sustoja ties pirmu
    i Nepaiso skirtumo tarp didžiųjų ir mažųjų raidžių
    m ^ ir $ atitinka kiekvienos eilutės pradžią ir pabaigą
    s . atitinka ir eilučių lūžius
    u Pilnas Unicode režimas: \u{…}, \p{…} ir jaustukai apdorojami kaip pavieniai simboliai
    y Lipni: kiekvienas atitikmuo turi prasidėti tiksliai ten, kur baigėsi ankstesnis

    Katastrofinis grįžimas atgal

    Kai kurie šablonai veikia eksponentiškai ilgai su tekstu, kuris beveik atitinka. Klasikinis pavyzdys yra (a+)+$, tikrinamas su ilga a eilute, po kurios eina b: variklis išbando visus būdus padalyti a tarp dviejų kvantifikatorių, kol galiausiai pasiduoda. Ši problema, žinoma kaip ReDoS, yra išjungusi tikras svetaines.

    Šis įrankis saugo tavo naršyklę trimis būdais. Atitikimas vykdomas foniniame darbuotojuje (worker), kuris sustabdomas po 1,5 sekundės; bandomasis tekstas ribojamas iki 100 000 simbolių; o paaiškinime įspėjama, kai kartojamoje grupėje yra dar vienas neriboto kartojimo kvantifikatorius. Kai šablonas viršija laiką, perrašyk jį taip, kad kiekvieną simbolį būtų galima atitikti tik vienu būdu, pavyzdžiui, a+$ vietoj (a+)+$.

    Dažnai užduodami klausimai

    Kokį regex variantą naudoja šis įrankis?

    Jis naudoja tavo naršyklės JavaScript (ECMAScript) variklį, lygiai taip, kaip tavo kode veiktų new RegExp() ir String.prototype.replace(). Didžioji dalis sintaksės sutampa su PCRE, Python ir Java, bet kai kurios galimybės skiriasi: savininkiškų kvantifikatorių ir atominių grupių JavaScript nėra, o žvilgsnis atgal palaikomas visose dabartinėse naršyklėse.

    Kodėl mano šablonas randa tik vieną atitikmenį?

    Išjungta g vėliavėlė. Be jos JavaScript sustoja po pirmo atitikmens, o pakeitimas pakeičia tik jį.

    Kaip atitikti pažodinį tašką, skliaustą ar klaustuką?

    Prieš jį parašyk atvirkštinį pasvirąjį brūkšnį: \., \[, \?. Paaiškinime tokie simboliai rodomi kaip „(su pabėgimo ženklu)“, kad galėtum patikrinti.

    Ar mano tekstas kur nors siunčiamas?

    Ne. Šablonas ir tekstas apdorojami tik tavo naršyklėje, todėl šis įrankis saugus žurnalų failams ar duomenims su asmenine informacija.

    Kodėl pozicija skiriasi nuo stulpelio mano redaktoriuje?

    Pozicijos skaičiuoja simbolius nuo 0 per visas eilutes, kaip JavaScript match.index. Eilutės lūžis skaičiuojamas kaip vienas simbolis, o jaustukas už Basic Multilingual Plane ribų – kaip du.