Gratis konverter

Regex Tester

Test og fejlretning af regulære udtryk med det samme i din browser. Fremhæv kampe, se optagelsesgrupper, og brug erstatningstilstand - gratis og privat.

//g
Flag:

Om dette værktøj

Regulære udtryk er et domænespecifikt sprog til at matche mønstre i tekst. De har været en del af computing siden 1968 og er nu indbygget i alle moderne programmeringssprog, teksteditorer og kommandolinjesøgeværktøjer. Syntaksen er kortfattet, men fejltilbøjelig: Små ændringer producerer subtilt anderledes matchadfærd, og komplekse udtryk bliver hurtigt ulæselige. En tester, der viser kampe i realtid, mens du redigerer mønsteret, er den mest effektive måde at udvikle og verificere regex.

Denne tester kører i din browser ved hjælp af JavaScript-regex-motoren (den samme som din applikation bruger, hvis den kører i en browser). Mønstre og testtekst opdateres reaktivt: hver ændring af enten genkører kampen. Matchgrupper fremhæves, indfangede grupper er listet, og flag (der skelnes mellem store og små bogstaver, multiline, globale) eksponeres til test.

Regex-syntaks varierer subtilt mellem motorer. JavaScript følger ECMAScript-specifikationen; Python, PCRE (brugt af PHP og mange andre), Java og Go har hver deres egne dialekter med overlappende, men ikke identiske funktioner. Mønstre udviklet her bruger ECMAScript-syntaks; cross-engine portabilitet kræver kontrol af hvert måls dokumentation.

Hvorfor bruge en Regex-tester

Regex-fejl er notorisk svære at fejlfinde efter implementering. Et mønster, der ser fornuftigt ud, kan matche mere eller mindre end tilsigtet, fejle på kantsager eller have katastrofal backtracking på visse input. Test af mønstre interaktivt mod repræsentativt input fanger problemer før kodegennemgang og produktion.

Mønstre har også gavn af dokumentation. Visning af et regex ved siden af ​​det input, det skal matche, og det input, det ikke skal matche, gør hensigten eksplicit. Fremtidige vedligeholdere (inklusive dig selv om seks måneder) sætter mere pris på dokumenterede testcases, end de sætter pris på smarte one-liners.

Sådan bruger du det

Indtast et mønster, skriv testinput, se kampe fremhævet live.

  1. Indtast dit mønster: Indtast regex-mønsteret i mønsterfeltet. Både bogstavelig regex (/mønster/flag) og mønster-only former fungerer; flag kan indstilles via flag input.
  2. Tilføj testinput: Indsæt eksempeltekst, som mønsteret skal matche (og ideelt set også tekst, det ikke skal matche). Testeren kører mønsteret mod inputtet og fremhæver kampe.
  3. Sæt flag: Fælles flag: g (global, find alle matches), i (uafhængig af store og små bogstaver), m (flerlinjet, ^ og $ match linje starter/slutter), s (dotall, . matcher nye linjer), u (Unicode).
  4. Undersøg resultater: Hver kamp er fremhævet i inputtet. Optag grupper vises på en liste med gruppeindeks og værdi. Testeren viser også antallet af kampe og eventuelle kompileringsfejl i mønsteret.

Almindelige anvendelsestilfælde

Tekniske detaljer

JavaScript regex følger ECMAScript-specifikationen. Vigtigste funktioner: tegnklasser ([abc], [^abc]), kvantificerere (*, +, ?, {n,m}), alternering (|), gruppering ((...)), indfangende og ikke-fangende grupper, lookahead og lookbehind (moderne motorer), tilbagereferencer, navngivne grupper, Unicode-egenskabsudslip (med u-flag) og standardsekvenserne.

Vigtige forskelle fra PCRE og Python: lookbehind-understøttelse er ny i JavaScript (2018+); navngivne grupper bruger (?<navn>...) syntaks; nogle Unicode-escapes kræver, at u-flaget fungerer korrekt. Mønstre beregnet til brug på tværs af sprog bør kontrolleres i forhold til hvert måls dokumentation.

Ydeevne: backtracking-baserede regex-motorer (de fleste inklusive JavaScript) kan have katastrofal backtracking på visse patologiske mønstre. Tests, der hænger testeren op, er et tegn på, at mønsteret trænger til forenkling - typisk ved at undgå indlejrede kvantifiers og tvetydig vekslen.

Bedste praksis

Ofte stillede spørgsmål

Hvilken regex-smag understøtter dette værktøj?
Den bruger JavaScripts indbyggede RegExp-motor, som understøtter standardsyntaks, herunder lookaheads, lookbehinds (i moderne browsere), navngivne capture-grupper og Unicode-egenskabsudslip.
Kan jeg teste regex-erstatninger?
Ja. Skift til udskiftningstilstand for at indtaste et erstatningsmønster. Du kan bruge $1, $2, osv. til at hente gruppe tilbage-referencer, og $<navn> til navngivne grupper.
Hvorfor matcher mit regex anderledes her end i Python/PHP?
Forskellige programmeringssprog har lidt forskellige regex-motorer. JavaScript understøtter ikke besiddende kvantifikatorer eller nogle PCRE-specifikke funktioner. Kernesyntaksen (karakterklasser, kvantificerere, grupper) er den samme på tværs af sprog.
Gemmer værktøjet mine regex-mønstre?
Nej. Intet gemmes eller transmitteres. Værktøjet kører udelukkende i din browser. Du kan bogmærke eller dele mønstre ved at kopiere regex-strengen.
Hvordan matcher jeg en bogstavelig specialkarakter?
Undslippe det med en omvendt skråstreg. For at matche en bogstavelig prik: \. For at matche en bogstavelig skråstreg: \\. Inde i karakterklasser [...] mister de fleste specialtegn deres betydning.
Kører testeren på en server?
Nej. Mønsterkompilering og -matchning sker i din browser ved hjælp af det native RegExp-objekt.
Kan jeg teste mønstre for ikke-JavaScript-motorer?
For det meste. For simple mønstre er de store motorer enige. For avancerede funktioner (lookbehind, atomgrupper, besiddende kvantifiers, Unicode-egenskabsudslip), bekræft mod målmotorens dokumentation.
Klarer den meget store input?
Op til et par megabyte fungerer problemfrit. Større input kan bremse eller hænge browseren, især med mønstre, der er tilbøjelige til at gå tilbage.