Gratis omformer

Regex Tester

Test og feilsøk regulære uttrykk umiddelbart i nettleseren din. Fremhev treff, se opptaksgrupper og bruk erstatningsmodus – gratis og privat.

//g
Flagg:

Om dette verktøyet

Regulære uttrykk er et domenespesifikt språk for å matche mønstre i tekst. De har vært en del av databehandling siden 1968 og er nå innebygd i alle moderne programmeringsspråk, tekstredigeringsverktøy og kommandolinjesøkeverktøy. Syntaksen er kortfattet, men utsatt for feil: små endringer produserer subtilt forskjellig matchatferd, og komplekse uttrykk blir raskt uleselige. En tester som viser treff i sanntid mens du redigerer mønsteret er den mest effektive måten å utvikle og verifisere regulært uttrykk på.

Denne testeren kjører i nettleseren din ved hjelp av JavaScript-regex-motoren (den samme applikasjonen din bruker hvis den kjører i en nettleser). Mønstre og testtekst oppdateres reaktivt: hver endring av begge kjører kampen på nytt. Matchgrupper utheves, fangede grupper er oppført, og flagg (uavhengig av store og små bokstaver, multiline, global) blir eksponert for testing.

Regex-syntaksen varierer subtilt mellom motorer. JavaScript følger ECMAScript-spesifikasjonen; Python, PCRE (brukt av PHP og mange andre), Java og Go har hver sine dialekter med overlappende, men ikke identiske funksjoner. Mønstre utviklet her bruker ECMAScript-syntaks; portabilitet på tvers av motorer krever at du sjekker hvert måls dokumentasjon.

Hvorfor bruke en Regex-tester

Regex-feil er notorisk vanskelig å feilsøke etter distribusjon. Et mønster som ser rimelig ut kan matche mer eller mindre enn tiltenkt, mislykkes på kantsaker, eller ha katastrofal tilbakesporing på visse innganger. Å teste mønstre interaktivt mot representativ input fanger opp problemer før kodegjennomgang og produksjon.

Mønstre har også nytte av dokumentasjon. Å vise et regulært uttrykk ved siden av inndata det skal samsvare med og inndata det ikke skal samsvare med, gjør intensjonen eksplisitt. Fremtidige vedlikeholdere (inkludert deg selv om seks måneder) setter mer pris på dokumenterte testtilfeller enn de setter pris på smarte one-liners.

Slik bruker du det

Skriv inn et mønster, skriv testinndata, se kamper uthevet live.

  1. Skriv inn mønsteret ditt: Skriv inn regex-mønsteret i mønsterfeltet. Både bokstavelig regex (/mønster/flagg) og mønster-bare former fungerer; flagg kan settes via flagginngangen.
  2. Legg til testinndata: Lim inn eksempeltekst som mønsteret skal matche (og ideelt sett også tekst det ikke skal samsvare). Testeren kjører mønsteret mot input og fremhever treff.
  3. Sett flagg: Vanlige flagg: g (global, finn alle treff), i (uavhengig av store og små bokstaver), m (flerlinjet, ^ og $ matchlinje starter/slutter), s (punktum, . samsvarer med nye linjer), u (Unicode).
  4. Inspiser resultatene: Hver kamp er uthevet i innspillet. Registrer grupper vises i en liste med gruppeindeks og verdi. Testeren viser også antall treff og eventuelle kompileringsfeil i mønsteret.

Vanlige brukstilfeller

Tekniske detaljer

JavaScript-regex følger ECMAScript-spesifikasjonen. Hovedfunksjoner: tegnklasser ([abc], [^abc]), kvantifiserere (*, +, ?, {n,m}), alternering (|), gruppering ((...)), fange- og ikke-fangende grupper, lookahead og lookbehind (moderne motorer), tilbakereferanser, navngitte grupper, Unicode-egenskapene unnslipper (med u-flagg) og standardsekvensene.

Viktige forskjeller fra PCRE og Python: lookbehind-støtte er nylig i JavaScript (2018+); navngitte grupper bruker (?<navn>...) syntaks; noen Unicode-escapes krever at u-flagget fungerer som det skal. Mønstre beregnet på tverrspråklig bruk bør kontrolleres mot hvert måls dokumentasjon.

Ytelse: tilbakesporingsbaserte regex-motorer (de fleste inkludert JavaScript) kan ha katastrofal tilbakesporing på visse patologiske mønstre. Tester som henger testeren er et tegn på at mønsteret trenger forenkling - typisk ved å unngå nestede kvantifiserere og tvetydig veksling.

Beste praksis

Ofte stilte spørsmål

Hvilken regex-smak støtter dette verktøyet?
Den bruker JavaScripts innebygde RegExp-motor, som støtter standard syntaks, inkludert lookaheads, lookbehinds (i moderne nettlesere), navngitte fangstgrupper og Unicode-egenskapsutganger.
Kan jeg teste regex-erstatninger?
Ja. Bytt til Erstatt-modus for å angi et erstatningsmønster. Du kan bruke $1, $2, osv. for tilbakereferanser for fangegruppe, og $<navn> for navngitte grupper.
Hvorfor samsvarer regex mitt annerledes her enn i Python/PHP?
Ulike programmeringsspråk har litt forskjellige regex-motorer. JavaScript støtter ikke besittende kvantifiserere eller noen PCRE-spesifikke funksjoner. Kjernesyntaksen (tegnklasser, kvantifiserere, grupper) er den samme på tvers av språk.
Lagrer verktøyet mine regex-mønstre?
Nei. Ingenting lagres eller overføres. Verktøyet kjører helt i nettleseren din. Du kan bokmerke eller dele mønstre ved å kopiere regex-strengen.
Hvordan matcher jeg en bokstavelig spesialkarakter?
Unngå det med et skråstrek. For å matche en bokstavelig prikk: \. For å matche en bokstavelig omvendt skråstrek: \\. Inne i karakterklasser [...] mister de fleste spesialtegn sin betydning.
Kjører testeren på en server?
Nei. Mønsterkompilering og matching skjer i nettleseren din ved å bruke det opprinnelige RegExp-objektet.
Kan jeg teste mønstre for ikke-JavaScript-motorer?
For det meste. For enkle mønstre er de store motorene enige. For avanserte funksjoner (lookbehind, atomgrupper, besittende kvantifiserere, Unicode-egenskapsunntak), bekreft mot målmotorens dokumentasjon.
Klarer den veldig store input?
Opptil noen få megabyte fungerer problemfritt. Større innganger kan redusere hastigheten eller henge nettleseren, spesielt med mønstre som er utsatt for tilbakesporing.