Regex Tester
Test en debug reguliere expressies direct in uw browser. Markeer overeenkomsten, bekijk opnamegroepen en gebruik de vervangingsmodus: gratis en privé.
Test en debug reguliere expressies direct in uw browser. Markeer overeenkomsten, bekijk opnamegroepen en gebruik de vervangingsmodus: gratis en privé.
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.
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.
Typ een patroon, typ testinvoer en bekijk de wedstrijden live gemarkeerd.
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.