Gratis converter

Regex Tester

Test en debug reguliere expressies direct in uw browser. Markeer overeenkomsten, bekijk opnamegroepen en gebruik de vervangingsmodus: gratis en privé.

//g
vlaggen:

Over deze tool

Reguliere expressies zijn een domeinspecifieke taal voor het matchen van patronen in tekst. Ze maken al sinds 1968 deel uit van computers en zijn nu ingebouwd in elke moderne programmeertaal, teksteditor en opdrachtregelzoekprogramma. De syntaxis is beknopt maar foutgevoelig: kleine veranderingen veroorzaken subtiel ander matchgedrag en complexe uitdrukkingen worden snel onleesbaar. Een tester die in realtime overeenkomsten toont terwijl u het patroon bewerkt, is de meest effectieve manier om regex te ontwikkelen en te verifiëren.

Deze tester draait in uw browser met behulp van de JavaScript-regex-engine (dezelfde die uw applicatie gebruikt als deze in een browser draait). Patronen en testteksten worden reactief bijgewerkt: bij elke wijziging in een van beide wordt de wedstrijd opnieuw uitgevoerd. Overeenkomstgroepen worden gemarkeerd, vastgelegde groepen worden vermeld en vlaggen (hoofdlettergevoelig, meerregelig, globaal) worden beschikbaar gesteld voor testen.

De syntaxis van Regex varieert subtiel tussen de motoren. JavaScript volgt de ECMAScript-specificatie; Python, PCRE (gebruikt door PHP en vele anderen), Java en Go hebben elk hun eigen dialecten met overlappende maar niet identieke kenmerken. Patronen die hier worden ontwikkeld, gebruiken de ECMAScript-syntaxis; Cross-engine portabiliteit vereist het controleren van de documentatie van elk doel.

Waarom een Regex-tester gebruiken

Regex-bugs zijn notoir moeilijk te debuggen na implementatie. Een patroon dat er redelijk uitziet, kan meer of minder overeenkomen dan bedoeld, mislukken in randgevallen of een catastrofale terugslag hebben op bepaalde invoer. Door patronen interactief te testen aan de hand van representatieve input worden problemen opgespoord voordat de code wordt beoordeeld en geproduceerd.

Patronen profiteren ook van documentatie. Door een regex weer te geven naast de invoer waarmee deze wel en niet overeen moet komen, wordt de intentie expliciet gemaakt. Toekomstige beheerders (waaronder jijzelf over zes maanden) waarderen gedocumenteerde testgevallen meer dan slimme oneliners.

Hoe te gebruiken

Typ een patroon, typ testinvoer en bekijk de wedstrijden live gemarkeerd.

  1. Voer uw patroon in: Typ het regex-patroon in het patroonveld. Zowel letterlijke regex (/pattern/flags) als formulieren met alleen patronen werken; vlaggen kunnen worden ingesteld via de vlaggeninvoer.
  2. Testinvoer toevoegen: Plak de voorbeeldtekst waar het patroon mee overeen moet komen (en idealiter ook de tekst waar het niet mee overeen moet komen). De tester voert het patroon uit op basis van de invoer en markeert overeenkomsten.
  3. Vlaggen instellen: Algemene vlaggen: g (globaal, vind alle overeenkomsten), i (niet hoofdlettergevoelig), m (multiline, ^ en $ match begin/eind van regel), s (dotall, . komt overeen met nieuwe regels), u (Unicode).
  4. Resultaten inspecteren: Elke match wordt gemarkeerd in de invoer. Vastleggroepen verschijnen in een lijst met groepsindex en waarde. De tester toont ook het aantal overeenkomsten en eventuele compilatiefouten in het patroon.

Veelvoorkomende gebruiksscenario's

Technische details

JavaScript-regex volgt de ECMAScript-specificatie. Belangrijkste kenmerken: karakterklassen ([abc], [^abc]), kwantoren (*, +, ?, {n,m}), afwisseling (|), groepering ((...)), vastleggende en niet-vastleggende groepen, lookahead en lookbehind (moderne zoekmachines), terugverwijzingen, benoemde groepen, Unicode-eigenschaps-escapes (met u-vlag) en de standaardset van escape-reeksen.

Belangrijke verschillen met PCRE en Python: lookbehind-ondersteuning is recent in JavaScript (2018+); benoemde groepen gebruiken (?<naam>...) syntaxis; Voor sommige Unicode-escapes is de u-vlag vereist om correct te werken. Patronen die bedoeld zijn voor gebruik in meerdere talen moeten worden gecontroleerd aan de hand van de documentatie van elk doel.

Prestaties: op backtracking gebaseerde regex-engines (de meeste inclusief JavaScript) kunnen catastrofale backtracking hebben op bepaalde pathologische patronen. Tests die de tester laten hangen, zijn een teken dat het patroon vereenvoudiging nodig heeft – meestal door geneste kwantoren en dubbelzinnige afwisseling te vermijden.

Beste praktijken

Veelgestelde vragen

Welke regex-smaak ondersteunt deze tool?
Het maakt gebruik van de ingebouwde RegExp-engine van JavaScript, die standaardsyntaxis ondersteunt, inclusief lookaheads, lookbehinds (in moderne browsers), benoemde capture-groepen en Unicode-eigenschaps-escapes.
Kan ik regex-vervangingen testen?
Ja. Schakel over naar de modus Vervangen om een ​​vervangingspatroon in te voeren. U kunt $1, $2, enz. gebruiken voor het vastleggen van terugverwijzingen naar groepen, en $<naam> voor benoemde groepen.
Waarom komt mijn regex hier anders overeen dan in Python/PHP?
Verschillende programmeertalen hebben enigszins verschillende regex-engines. JavaScript ondersteunt geen bezittelijke kwantoren of sommige PCRE-specifieke functies. De kernsyntaxis (karakterklassen, kwantoren, groepen) is in alle talen hetzelfde.
Slaat de tool mijn regex-patronen op?
Nee. Er wordt niets opgeslagen of verzonden. De tool draait volledig in uw browser. U kunt patronen bookmarken of delen door de regex-tekenreeks te kopiëren.
Hoe match ik een letterlijk speciaal teken?
Ontsnap eraan met een backslash. Om een ​​letterlijke punt te matchen: \. Om een ​​letterlijke backslash te matchen: \\. Binnen karakterklassen [...] verliezen de meeste speciale karakters hun betekenis.
Draait de tester op een server?
Nee. Het compileren en matchen van patronen gebeurt in uw browser met behulp van het oorspronkelijke RegExp-object.
Kan ik patronen testen voor niet-JavaScript-engines?
Grotendeels. Voor eenvoudige patronen zijn de grote motoren het daarmee eens. Voor geavanceerde functies (lookbehind, atomaire groepen, bezittelijke kwantoren, ontsnappingen van Unicode-eigenschappen) bevestigt u de documentatie van de doelengine.
Kan het zeer grote input verwerken?
Tot een paar megabytes werkt het probleemloos. Grotere invoer kan de browser vertragen of vastlopen, vooral bij patronen die gevoelig zijn voor backtracking.