Regex-tester
Test regulære udtryk i JavaScript live med fremhævede match, indfangende grupper, erstatning og en forklaring i klart sprog af hvert led i mønsteret.
| # | Position | Match | Grupper |
|---|
Forklaring af mønsteret
Advarsel: en gentaget gruppe indeholder endnu en åben kvantor, for eksempel (a+)+. Den slags mønstre kan tage eksponentiel tid på tekst, der næsten matcher (katastrofal backtracking).
Sådan bruger du regex-testeren
- Skriv dit mønster i Regulært udtryk uden de omgivende skråstreg. Skråstregerne og de aktive flag vises omkring feltet, som i
/mønster/g. - Sæt kryds ved de Flag, du har brug for:
g(global),i(ignorér store/små bogstaver),m(flere linjer),s(dotAll),u(unicode) ellery(sticky). - Indsæt den tekst, der skal søges i, i Testtekst. Match fremhæves, mens du skriver, og tabellen viser hvert match med position og indfangende grupper.
- Vil du prøve en erstatning, så udfyld Erstatning. Feltet Resultat efter erstatning viser teksten, hvor hvert match er erstattet, klar til at kopiere.
- Læs Forklaring af mønsteret for at tjekke, hvad hver del af dit regex gør. Ved du ikke, hvor du skal begynde? Klik på Indlæs et eksempel.
Hvad testeren viser
- Fremhævede match: hvert match i testteksten er markeret, så du med et blik kan se, hvad der fanges, og hvad der går forbi.
- Tabel med match: nummeret på hvert match, dets position (tegnforskydning fra starten, talt fra 0), den matchede tekst og værdien af hver indfangende gruppe. Navngivne grupper som
(?<year>\d{4})vises under deres navn, og grupper, der ikke deltog i matchet, vises som »(ikke matchet)«. De første 1.000 match vises. - Erstatning: erstatningsteksten bruger JavaScripts syntaks:
$1eller$2for nummererede grupper,$<name>for navngivne grupper,$&for hele matchet og$$for et bogstaveligt dollartegn. Uden flagetgerstattes kun det første match. - Forklaring: mønsteret deles op i led (literal tekst, tegnklasser, ankre, grupper, kvantorer, lookarounds, tilbagehenvisninger), hver med en kort beskrivelse. Indlejrede grupper er indrykket, hvilket gør lange mønstre meget lettere at gennemgå.
Flagene i korthed
| Flag | Virkning |
|---|---|
g |
Finder alle match i stedet for at stoppe ved det første |
i |
Ignorerer forskellen på store og små bogstaver |
m |
^ og $ matcher ved starten og slutningen af hver linje |
s |
. matcher også linjeskift |
u |
Fuld Unicode-tilstand: \u{…}, \p{…} og emoji behandles som enkelte tegn |
y |
Sticky: hvert match skal starte præcis dér, hvor det forrige sluttede |
Katastrofal backtracking
Nogle mønstre tager eksponentiel tid på tekst, der næsten matcher. Det klassiske eksempel er (a+)+$ testet mod en lang række a efterfulgt af et b: motoren prøver alle måder at fordele a‘erne mellem de to kvantorer på, før den giver op. Dette problem, kendt som ReDoS, har fået rigtige websites til at bryde sammen.
Værktøjet beskytter din browser på tre måder. Matchningen kører i en baggrundsarbejder (worker), som stoppes efter 1,5 sekunder; testteksten er begrænset til 100.000 tegn; og forklaringen advarer dig, når en gentaget gruppe indeholder endnu en åben kvantor. Når et mønster løber ud i timeout, så skriv det om, så hvert tegn kun kan matches på én måde, for eksempel a+$ i stedet for (a+)+$.
Ofte stillede spørgsmål
Hvilken variant af regulære udtryk bruger værktøjet?
Det bruger din browsers JavaScript-motor (ECMAScript), præcis som new RegExp() og String.prototype.replace() ville gøre i din kode. Det meste af syntaksen deles med PCRE, Python og Java, men nogle funktioner er forskellige: possessive kvantorer og atomare grupper findes ikke i JavaScript, og lookbehind understøttes i alle nuværende browsere.
Hvorfor finder mit mønster kun ét match?
Flaget g er slået fra. Uden det stopper JavaScript efter det første match, og erstatningen ændrer kun det ene.
Hvordan matcher jeg et bogstaveligt punktum, en kantet parentes eller et spørgsmålstegn?
Escap det med en omvendt skråstreg: \., \[, \?. Forklaringen viser escapede tegn som »(escapet)«, så du kan kontrollere det.
Bliver min tekst sendt nogen steder hen?
Nej. Mønsteret og teksten behandles kun i din browser, hvilket gør værktøjet sikkert til logfiler eller data med personoplysninger.
Hvorfor er positionen anderledes end kolonnen i min editor?
Positioner tæller tegn fra 0 på tværs af alle linjer, sådan som JavaScripts match.index gør. Linjeskift tæller som ét tegn, og en emoji uden for Basic Multilingual Plane tæller som to.
Relaterede værktøjer
- JSON-formatering og -validering Gratis JSON-formatering og -validering, der gør JSON pæn, minificerer og tjekker den i din browser, med syntaksfejl angivet med linje og kolonne.
- URL-koder og -afkoder Gratis URL-koder og -afkoder. Procentkod forespørgselsparametre eller hele URL'er, afkod %XX-sekvenser, og behandl + som mellemrum. Kører i din browser.
- Hash-generator Generér MD5-, SHA-1-, SHA-256- og SHA-512-hashes af tekst eller filer i enhver størrelse, og kontrollér tjeksummer. Alt kører i din browser.