Regex-tester
Test regulære uttrykk i JavaScript live, med uthevede treff, fangstgrupper, erstatning og en forklaring på vanlig norsk av hvert enkelt element i mønsteret.
| # | Posisjon | Treff | Grupper |
|---|
Forklaring av mønsteret
Advarsel: en gjentatt gruppe inneholder en annen åpen kvantifikator, for eksempel (a+)+. Slike mønstre kan bruke eksponentiell tid på tekst som nesten stemmer (katastrofal backtracking).
Slik bruker du regex-testeren
- Skriv mønsteret ditt i Regulært uttrykk, uten omsluttende skråstreker. Skråstrekene og de aktive flaggene vises rundt feltet, som i
/mønster/g. - Huk av for de Flagg du trenger:
g(global),i(ignorer store/små bokstaver),m(flere linjer),s(dotAll),u(unicode) ellery(sticky). - Lim inn teksten som skal søkes i, i Testtekst. Treffene utheves mens du skriver, og tabellen lister hvert treff med posisjon og fangstgrupper.
- Vil du prøve en erstatning, fyller du inn Erstatning. Boksen Resultat etter erstatning viser teksten der hvert treff er erstattet, klar til å kopieres.
- Les Forklaring av mønsteret for å sjekke hva hver del av regexen gjør. Usikker på hvor du skal begynne? Klikk Last inn et eksempel.
Dette viser testeren
- Uthevede treff: hvert treff i testteksten er markert, så du ser med et blikk hva som fanges opp og hva som går glipp.
- Tabellen Treff: nummeret på hvert treff, posisjonen (tegnavstand fra starten, regnet fra 0), den treffende teksten og verdien av hver fangstgruppe. Navngitte grupper som
(?<year>\d{4})vises under navnet sitt, og grupper som ikke var med i treffet, vises som «(ikke truffet)». De første 1 000 treffene listes opp. - Erstatning: erstatningsteksten bruker JavaScript-syntaks:
$1eller$2for nummererte grupper,$<name>for navngitte grupper,$&for hele treffet og$$for et ekte dollartegn. Uteng-flagget erstattes bare det første treffet. - Forklaring: mønsteret deles opp i elementer (bokstavelig tekst, tegnklasser, ankere, grupper, kvantifikatorer, lookarounds, tilbakereferanser), hver med en kort beskrivelse. Nestede grupper er rykket inn, noe som gjør lange mønstre mye enklere å gå gjennom.
Flaggene kort fortalt
| Flagg | Virkning |
|---|---|
g |
Finner alle treff i stedet for å stoppe ved det første |
i |
Ser bort fra forskjellen på store og små bokstaver |
m |
^ og $ treffer på start og slutt av hver linje |
s |
. treffer også linjeskift |
u |
Full Unicode-modus: \u{…}, \p{…} og emoji behandles som enkelttegn |
y |
Sticky: hvert treff må begynne akkurat der det forrige sluttet |
Katastrofal backtracking
Noen mønstre bruker eksponentiell tid på tekst som nesten stemmer. Det klassiske eksempelet er (a+)+$ testet mot en lang rekke med a etterfulgt av en b: motoren prøver alle måter å fordele a-ene på mellom de to kvantifikatorene før den gir opp. Dette problemet, kjent som ReDoS, har tatt ned ekte nettsteder.
Verktøyet beskytter nettleseren din på tre måter. Søket kjører i en bakgrunnsarbeider som stoppes etter 1,5 sekunder, testteksten er begrenset til 100 000 tegn, og forklaringen advarer deg når en gjentatt gruppe inneholder en annen åpen kvantifikator. Når et mønster går ut på tid, skriver du det om slik at hvert tegn bare kan treffes på én måte, for eksempel a+$ i stedet for (a+)+$.
Ofte stilte spørsmål
Hvilken regex-variant bruker verktøyet?
Det bruker JavaScript-motoren (ECMAScript) i nettleseren din, akkurat slik new RegExp() og String.prototype.replace() ville gjort i koden din. Mesteparten av syntaksen deles med PCRE, Python og Java, men noen funksjoner er ulike: possessive kvantifikatorer og atomiske grupper finnes ikke i JavaScript, og lookbehind støttes i alle aktuelle nettlesere.
Hvorfor finner mønsteret mitt bare ett treff?
g-flagget er av. Uten det stopper JavaScript etter det første treffet, og erstatningen endrer bare det ene.
Hvordan treffer jeg et ekte punktum, en hakeparentes eller et spørsmålstegn?
Escape det med en omvendt skråstrek: \., \[, \?. Forklaringen viser escapede tegn som «(escapet)», så du kan sjekke det.
Blir teksten min sendt noe sted?
Nei. Mønsteret og teksten behandles bare i nettleseren din, og det gjør verktøyet trygt å bruke på loggfiler eller data som inneholder personopplysninger.
Hvorfor er posisjonen forskjellig fra kolonnen i editoren min?
Posisjoner teller tegn fra 0, gjennom alle linjer, slik JavaScripts match.index gjør. Linjeskift teller som ett tegn, og en emoji utenfor Basic Multilingual Plane teller som to.
Relaterte verktøy
- JSON-formaterer og -validator Gratis JSON-formaterer og -validator som gjør JSON ryddig, minifiserer og kontrollerer den i nettleseren din, med syntaksfeil oppgitt med linje og kolonne.
- URL-koding og -dekoding Gratis URL-koder og -dekoder. Prosentkod spørringsparametere eller hele URL-er, dekod %XX-sekvenser og behandle + som mellomrom. Kjører i nettleseren din.
- Hash-generator Lag MD5-, SHA-1-, SHA-256- og SHA-512-hasher av tekst eller filer i alle størrelser, og kontroller sjekksummer. Alt kjører i nettleseren din.