CodeKitHub
Teksto įrankiai

Regex testuoklis internete

Paskutinį kartą atnaujinta:

Regex testuoklis leidžia parašyti reguliariąją išraišką ir iš karto pamatyti, kaip ji atitinka realų tekstą, su fiksavimo grupėmis ir žymomis, matomomis jums rašant — šis įrankis naudoja JavaScript variklį, aprašytą MDN reguliariųjų išraiškų vadove, tą pačią sintaksę, kurią naudoja Node.js ir kiekviena naršyklė. Puikiai tinka kuriant ir derinant šablonus prieš įdedant juos į kodą.

//

    Kas yra šis įrankis?

    Reguliarioji išraiška (regex) yra glausta šablonų kalba tekstui rasti, patikrinti ir ištraukti: el. pašto šablonas gali patikrinti formos įvestį, \d{4}-\d{2}-\d{2} randa datas, o fiksavimo grupės ištraukia reikiamas dalis. Beveik kiekviena programavimo kalba ir redaktorius palaiko regex.

    Šis testuoklis naudoja JavaScript regex variklį — tą patį, kuris veikia Node.js ir kiekvienoje naršyklėje — tad čia sukurti šablonai elgiasi identiškai jūsų JavaScript/TypeScript kode. Dauguma šablonų taip pat veikia nepakeisti Python, Java ir Go.

    Kodėl jį naudoti?

    • Gyvas grįžtamasis ryšys: atitikmenys paryškinami geltonai, jums rašant šabloną.
    • Fiksavimo grupės rodomos kiekvienam atitikmeniui — matote tiksliai, ką turės $1 ir $2.
    • Pilnas žymų palaikymas: g (visi atitikmenys), i (ignoruoti raidžių dydį), m (kelios eilutės), s (taškas atitinka naują eilutę), u (unikodas).
    • Aiškūs klaidų pranešimai, kai šablonas turi sintaksės klaidą.
    • Nemokama ir privatu — šablonas ir tekstas niekada nepalieka jūsų naršyklės.

    Kaip naudoti

    1. Įveskite savo šabloną tarp dviejų / simbolių (pasviruosius brūkšnius pačiam nurodyti nereikia).
    2. Koreguokite žymes mažame langelyje po antrojo / — numatytoji g randa visus atitikmenis.
    3. Įklijuokite testinį tekstą žemiau.
    4. Atitikmenys iš karto paryškinami; fiksavimo grupės išvardijamos žemiau.
    5. Jei šablonas neteisingas, klaidos pranešimas paaiškina, kas negerai.

    Pavyzdys

    Įvestis

    Šablonas: (\w+)@(\w+)\.com
    Testinis tekstas: Susisiekite alice@example.com arba bob@test.com

    Išvestis

    ✓ 2 atitikmenys
    #1 grupės: $1=alice  $2=example
    #2 grupės: $1=bob  $2=test

    Skliausteliai sukuria fiksavimo grupes, kurias galite naudoti kaip $1 ir $2 pakeitimuose.

    Praktiniai patarimai

    • Tikrinate el. pašto įvestį? ^[^\s@]+@[^\s@]+\.[^\s@]+$ yra atlaidus šablonas, aptinkantis akivaizdžias klaidas, neatmesdamas galiojančių, bet neįprastų adresų — pilnam RFC 5322 atitikimui reikia bibliotekos, o ne vienos eilutės.
    • Ištraukiate užklausos parametrus iš URL: [?&]([^=]+)=([^&]*) su g žyma, tada skaitykite $1/$2 kiekvienam atitikmeniui, o ne skaidykite ranka pagal & ir =.
    • Ruošiatės naudoti šabloną .replace() metode? Pirmiausia išbandykite čia — kas paryškinama, tiksliai atitiks tai, ką paveiks .replace(), įskaitant fiksavimo grupes.
    • Analizuojate kelių eilučių žurnalus (ieškote laiko žymos kiekvienos eilutės pradžioje)? Pridėkite m žymą, kad ^ ir $ prisitvirtintų prie kiekvienos eilutės, o ne prie viso teksto.
    • Nukopijavote šabloną iš Python ar PHP ir jis čia neatitinka? Patikrinkite dėl (?P<name>...) pavadintų grupių — JavaScript naudoja (?<name>...), be P — arba turėtų valdiklius (++, *+), kurių JavaScript regex neturi.

    JavaScript regex testuoklis, ne universalus

    Šis įrankis naudoja JavaScript integruotą RegExp variklį — tą patį kodą, kuris veikia už str.match(pattern) ar pattern.test(str) naršyklės konsolėje ar Node.js. Tai skiriasi nuo testavimo su PCRE (kurį naudoja PHP ir kurį pagal numatytuosius nustatymus naudoja daugelis „universalių“ regex testuoklių) ar Python re modulio: JavaScript neturi turimų valdiklių ar atominių grupių, o pavadintos fiksavimo grupės naudoja (?<name>...) vietoj PCRE/Python (?P<name>...).

    Jei ruošiatės išleisti šabloną JS ar TypeScript kode — formos tikrinimui, maršruto atitikikliui, žurnalo analizatoriui — testavimas čia reiškia jokio nesutapimo tarp variantų: kas paryškinama šiame puslapyje, tiksliai atitinka tai, ką new RegExp(pattern, flags) atitinka veikimo metu.

    Kur tai tinka realiuose scenarijuose

    Regex testavimas retai vyksta atskirai. Įprasta seka: patvirtinkite šabloną čia, paleiskite tikrą .replace() savo kode, tada palyginkite tekstą prieš ir po, kad įsitikintumėte, jog pakeitimas atliko tai, ko tikėjotės, ir nieko daugiau.

    Struktūrizuotų duomenų ištraukimas su fiksavimo grupėmis dažnai tiesiogiai virsta JSON — suformatuokite ištrauktą rezultatą, kad patikrintumėte, jog jis apdorotas taip, kaip tikėjotės.

    Teksto skirtumų palyginimas · JSON formatuoklė

    Dažniausiai užduodami klausimai

    Kokį regex variantą naudoja šis testuoklis?

    JavaScript (ECMAScript) — variklį, naudojamą kiekvienoje naršyklėje ir Node.js. Pagrindinė sintaksė perkeliama, bet kai kurios funkcijos skiriasi kalbose — pvz., atgalinis žvilgsnis (lookbehind) ir pavadintų grupių sintaksė skiriasi Python ir Java.

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

    Trūksta g (globalios) žymos. Be g regex sustoja po pirmo atitikmens. Šis įrankis numatytai naudoja g — patikrinkite, ar jos neišjungėte.

    Kodėl taškas . neatitinka mano eilučių lūžių?

    Pagal numatytuosius nustatymus . atitinka bet kokį simbolį, išskyrus naujos eilutės ženklą. Pridėkite žymą s (dotall), kad . atitiktų ir naujas eilutes, arba naudokite [\s\S] kaip perkeliamą alternatyvą.

    Ką reiškia fiksavimo grupių rezultatai?

    Kiekviena skliaustelių pora jūsų šablone užfiksuoja atitikusį tekstą. $1 yra pirma grupė, $2 — antra, ir taip toliau — būtent jas naudojate pakeitimo operacijose ir ištraukimo kode.

    Kodėl mano regex lėtas ar užstringa?

    Tikėtina, kad tai katastrofinis atsitraukimas (backtracking), sukeltas įdėtų kiekiklių, tokių kaip (a+)+, netinkamiems duomenims. Perrašykite šabloną, kad išvengtumėte dviprasmiško pasikartojimo. Šis įrankis riboja iki 1000 atitikmenų, kad išliktų reaguojantis.

    Susiję įrankiai