Regex testuoklis
Testuok JavaScript reguliariąsias išraiškas gyvai: paryškinti atitikmenys, fiksuojančios grupės, pakeitimas ir paprastas kiekvieno elemento paaiškinimas.
| # | Pozicija | Atitikmuo | Grupės |
|---|
Šablono paaiškinimas
Įspėjimas: kartojamoje grupėje yra dar vienas neriboto kartojimo kvantifikatorius, pavyzdžiui, (a+)+. Tokie šablonai gali veikti eksponentiškai ilgai su tekstu, kuris beveik atitinka (katastrofinis grįžimas atgal).
Kaip naudotis regex testuokle
- Į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. - Pažymėk reikiamas Vėliavėlės:
g(globali),i(nepaisyti raidžių registro),m(daugiaeilutė),s(dotAll),u(unicode) arbay(lipni). - Į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.
- Norint išbandyti pakeitimą, užpildyk Pakeitimas. Laukelyje Rezultatas po pakeitimo matomas tekstas, kuriame pakeisti visi atitikmenys, paruoštas kopijuoti.
- 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ę:
$1ar$2numeruotoms grupėms,$<name>įvardytoms grupėms,$&visam atitikmeniui ir$$pažodiniam dolerio ženklui. Begvė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.
Susiję įrankiai
- JSON formatuotojas ir tikrintuvas Nemokamas JSON formatuotojas ir tikrintuvas, kuris naršyklėje sutvarko, minimizuoja ir tikrina JSON, o sintaksės klaidas nurodo su eilute ir stulpeliu.
- URL kodavimas ir dekodavimas Nemokamas URL koduotuvas ir dekoderis. Užkoduok užklausos parametrus ar visus URL, dekoduok %XX sekas ir apdorok + kaip tarpą. Veikia tavo naršyklėje.
- Maišos generatorius (MD5, SHA-256) Sukurk teksto ar bet kokio dydžio failų MD5, SHA-1, SHA-256 ir SHA-512 maišas ir patikrink kontrolines sumas. Viskas vyksta tavo naršyklėje.