Gratis Online Regex Tester & Validator - Test Patronen Direct
Test en valideer reguliere expressies online met real-time markering. Gratis regex patroon tester met syntaxvalidatie, matchresultaten en opslagfunctionaliteit. Test regex nu!
Regex Patroon Tester
Overeenkomst Resultaten
Voer een patroon en testtekst in om resultaten te zien
Patroon Opslaan
Overeenkomst Resultaten
Voer een patroon en testtekst in om resultaten te zien
Opgeslagen Patronen
Nog geen opgeslagen patronen
Regex Symbolen Gids
.Komt overeen met elk teken behalve nieuwe regel\dKomt overeen met elk cijfer (0-9)\DKomt overeen met elk niet-cijfer\wKomt overeen met elk woordteken (a-z, A-Z, 0-9, _)\WKomt overeen met elk niet-woordteken\sKomt overeen met elk witruimteteken\SKomt overeen met elk niet-witruimteteken^Komt overeen met begin van regel$Komt overeen met einde van regel*Komt overeen met 0 of meer van het voorafgaande teken+Komt overeen met 1 of meer van het voorafgaande teken?Komt overeen met 0 of 1 van het voorafgaande teken{n}Komt overeen met exact n van het voorafgaande teken{n,}Komt overeen met ten minste n van het voorafgaande teken{n,m}Komt overeen met tussen n en m van het voorafgaande teken[abc]Komt overeen met een van de tekens in de vierkante haken[^abc]Komt overeen met elk teken niet in de vierkante haken(abc)Groepeert meerdere tokens samen en vangt de overeenkomsta|bKomt overeen met ofwel a of b\bKomt overeen met een woordgrens positieDocumentatie
Wat is een regex-tester
Een regex-tester is een hulpmiddel dat een reguliere expressie aan een stuk tekst toetst en laat zien welke tekst ermee overeenkomt. Een reguliere expressie, of regex, is een korte reeks tekens die een patroon in tekst beschrijft, zoals "drie cijfers achter elkaar" of "elk woord dat met een hoofdletter begint". Met deze regex-validator kan iemand een patroon en testtekst invoeren en vervolgens de overeenkomsten meteen gemarkeerd zien, zonder code te schrijven.
Reguliere expressies worden in veel programmeertalen gebruikt om tekst te doorzoeken, te controleren of gebruikersinvoer de juiste indeling heeft en specifieke delen uit een groter tekstblok te halen. De syntaxis is compact, maar fouten zijn snel gemaakt. Door een patroon te testen voordat het in een programma wordt gebruikt, kunnen fouten vroeg worden ontdekt.
Een reguliere expressie online testen
- Voer een patroon in. Voer de regex in het patroonveld in. Het hulpmiddel controleert de syntaxis tijdens het typen en toont een foutmelding als het patroon ongeldig is, bijvoorbeeld wanneer een haakje of ronde haak niet wordt gesloten.
- Kies vlaggen. Vlaggen bepalen hoe het patroon wordt toegepast (zie hieronder).
- Voer testtekst in. Typ of plak de tekst waarin moet worden gezocht in het tekstvak voor testtekst.
- Lees de resultaten. Overeenkomsten worden in de tekst gemarkeerd en het hulpmiddel meldt hoeveel overeenkomsten het heeft gevonden. Als er testtekst is, wordt ook aangegeven of het patroon overeenkomt met de volledige tekst van begin tot eind, of slechts met een deel ervan.
- Sla een patroon op. Een patroon kan met een kort label worden opgeslagen, zodat het later opnieuw kan worden gebruikt. Opgeslagen patronen worden in de browser bewaard, niet op een server. Ze verschijnen dus alleen op hetzelfde apparaat en in dezelfde browser.
- Kopieer resultaten. De overeenkomende tekst of het patroon zelf kan met één klik naar het klembord worden gekopieerd.
Regex-vlaggen
Een vlag is één letter die achter een patroon wordt geplaatst en de werking ervan verandert. Dit hulpmiddel ondersteunt vier vlaggen, afzonderlijk of gecombineerd:
| Vlag | Naam | Effect |
|---|---|---|
g | Globaal | Vindt elke overeenkomst in de tekst in plaats van te stoppen bij de eerste. |
i | Hoofdletterongevoelig | Negeert verschillen tussen hoofdletters en kleine letters. |
m | Meerdere regels | Zorgt ervoor dat ^ en $ overeenkomen met het begin en einde van elke regel, niet alleen met het begin en einde van de volledige tekst. Dit verandert waar overeenkomsten worden gevonden, maar niet de hieronder beschreven controle van de volledige tekst. |
s | Punt voor alle tekens | Zorgt ervoor dat . ook overeenkomt met regeleinden. |
Vlaggen kunnen worden gecombineerd, bijvoorbeeld gi voor globaal en hoofdletterongevoelig, of gms voor globaal, meerdere regels en punt voor alle tekens tegelijk.
Hoe het hulpmiddel overeenkomsten vindt
De matcher zoekt altijd naar alle voorkomens van het patroon in de tekst. Daarom worden overeenkomsten geteld alsof de globale vlag is ingeschakeld, ook wanneer deze niet in de keuzelijst is geselecteerd. Elke overeenkomst wordt met de positie en lengte vastgelegd. Daarna wordt de oorspronkelijke tekst opgesplitst in overeenkomende en niet-overeenkomende delen, zodat de overeenkomsten kunnen worden gemarkeerd.
Om te controleren of een patroon overeenkomt met de volledige tekst, plaatst het hulpmiddel het patroon in een niet-capturerende groep en voorziet het van ankers: ^(?:pattern)$. De groepering is van belang, omdat | (alternatie) minder sterk bindt dan de ankers. Zonder de groep zou een patroon als cat|dog met de ankers ^cat|dog$ eigenlijk betekenen: "begint met cat of eindigt met dog", en niet: "de volledige tekst is cat of dog".
Bij deze controle wordt ook de vlag voor meerdere regels verwijderd. Met m ingesteld komen ^ en $ bij elk regeleinde overeen. De controle met ankers zou dan antwoorden op de vraag "komt een afzonderlijke regel overeen?" in plaats van "komt de volledige tekst overeen?". Het hulpmiddel verwijdert m voor deze controle en behoudt i en s, omdat die twee bepalen waarmee het patroon overeenkomt en niet waar de ankers staan. Het antwoord heeft daarom altijd betrekking op de volledige tekst, inclusief de regeleinden.
Uitgewerkt voorbeeld
Patroon: \d+ (een of meer cijfers), vlag: g, testtekst: Room 12 has 5 chairs.
- Gevonden overeenkomsten:
12en5, dus het aantal overeenkomsten is 2. - Controle van de volledige tekst: het patroon komt niet overeen met de volledige tekst, omdat de tekst ook letters en spaties bevat.
Als de testtekst wordt gewijzigd in 12345, komt hetzelfde patroon overeen met de volledige tekenreeks. De controle van de volledige tekst meldt dan waar.
Naslagwerk voor regex-syntaxis
Overeenkomst met tekens
| Symbool | Betekenis | Voorbeeld | Komt overeen met |
|---|---|---|---|
. | Elk teken behalve een regeleinde | a.c | "abc", "adc", "a1c" |
\d | Elk cijfer, van 0 tot 9 | \d{3} | "123", "456" |
\D | Elk teken dat geen cijfer is | \D+ | "abc", "xyz" |
\w | Elke letter, elk cijfer of onderstrepingsteken | \w+ | "abc123", "test_123" |
\W | Elk teken dat geen letter, cijfer of onderstrepingsteken is | \W+ | "!@#" |
\s | Elk witruimteteken | a\sb | "a b" |
\S | Elk teken dat geen witruimteteken is | \S+ | "abc" |
Positieankers
| Symbool | Betekenis | Voorbeeld | Komt overeen met |
|---|---|---|---|
^ | Begin van een regel | ^abc | "abc" aan het begin van een regel |
$ | Einde van een regel | abc$ | "abc" aan het einde van een regel |
\b | Een woordgrens | \bword\b | "word" als volledig woord |
Kwantoren
| Symbool | Betekenis | Voorbeeld | Komt overeen met |
|---|---|---|---|
* | Nul of meer exemplaren van het vorige onderdeel | a*b | "b", "ab", "aab" |
+ | Een of meer exemplaren van het vorige onderdeel | a+b | "ab", "aab" |
? | Nul of één exemplaar van het vorige onderdeel | colou?r | "color", "colour" |
{n} | Precies n exemplaren van het vorige onderdeel | a{3} | "aaa" |
{n,} | Ten minste n exemplaren van het vorige onderdeel | a{2,} | "aa", "aaa" |
{n,m} | Tussen n en m exemplaren van het vorige onderdeel | a{2,4} | "aa", "aaa", "aaaa" |
Tekensets en groepen
| Symbool | Betekenis | Voorbeeld | Komt overeen met |
|---|---|---|---|
[abc] | Een willekeurig teken dat tussen de haakjes staat | [aeiou] | elke afzonderlijke klinker |
[^abc] | Elk teken dat niet tussen de haakjes staat | [^aeiou] | elk teken dat geen klinker is |
(abc) | Groepeert tekens en legt de overeenkomst vast | (abc)+ | "abc", "abcabc" |
| a | b | Komt overeen met a of b | cat |
Er zijn nog twee functies die nuttig zijn om te kennen. Een vooruitkijker, geschreven als a(?=b), komt alleen overeen met "a" als dit wordt gevolgd door "b", zonder "b" in de overeenkomst op te nemen. Een terugkijker, geschreven als (?<=a)b, komt alleen overeen met "b" als dit direct na "a" staat.
Veelvoorkomende patroonvoorbeelden
Deze patronen kunnen in het hulpmiddel worden geplakt om te zien hoe ze zich gedragen bij voorbeeldtekst.
Alleen cijfers: ^\d+$ komt overeen met een tekenreeks die volledig uit cijfers bestaat, zoals "48210", en wijst alles met een letter of spatie af.
E-mailadres (basiscontrole): ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ komt overeen met adressen in de vorm name@domain.tld, zoals "user@example.com". Dit is een eenvoudige controle en niet de volledige indeling van e-mailadressen die door internetstandaarden wordt gedefinieerd. Sommige ongebruikelijke maar geldige adressen worden daarom afgewezen.
Amerikaans telefoonnummer: ^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$ komt overeen met indelingen zoals "(123) 456-7890", "123-456-7890" en "1234567890".
Datum in de indeling JJJJ-MM-DD: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$ controleert of de maand tussen 01 en 12 ligt en de dag tussen 01 en 31. Er wordt niet gecontroleerd of de dag geldig is voor de specifieke maand. Daarom wordt "2024-02-30" geaccepteerd, hoewel februari nooit 30 dagen heeft.
Veelgestelde vragen
Wat is een reguliere expressie? Een reguliere expressie is een reeks tekens die een zoekpatroon definieert. Deze wordt in de meeste programmeertalen en teksteditors gebruikt om tekst te doorzoeken, overeenkomsten te vinden en tekst te bewerken.
Wat doet de globale vlag?
Zonder de globale vlag stopt een zoekopdracht normaal gesproken na de eerste overeenkomst. Met de globale vlag (g) gaat de zoekopdracht door en worden alle overeenkomsten in de tekst gemeld. Dit hulpmiddel zoekt bij het tellen altijd naar alle overeenkomsten, ongeacht de gekozen vlag.
Hoe vind ik een letterlijk punt of ander speciaal teken?
Plaats er een backslash voor. \. komt bijvoorbeeld overeen met een letterlijk punt in plaats van met "elk teken", wat een niet-geëscapete . betekent.
Wat is het verschil tussen .* en .*??
.* is hebzuchtig en komt overeen met zo veel mogelijk tekens. .*? is lui en komt overeen met zo weinig mogelijk tekens, zolang de rest van het patroon nog steeds slaagt.
Waarom zegt het hulpmiddel dat de tekst niet volledig overeenkomt terwijl elke regel overeenkomt?
De controle van de volledige tekst behandelt de tekst als één tekenreeks, inclusief regeleinden. Een patroon als \d+ komt afzonderlijk overeen met elke regel van 12 en 34, maar de twee regels en het regeleinde ertussen bestaan niet volledig uit cijfers. Daarom is het antwoord voor de volledige tekst nee. Om overeen te komen met tekst die meerdere regels beslaat, moet het patroon ook de regeleinden omvatten, bijvoorbeeld met [\s\S]+.
Hoe controleer ik of een volledige tekenreeks met een patroon overeenkomt, en niet slechts een deel ervan?
Voeg ^ toe aan het begin en $ aan het einde van het patroon, bijvoorbeeld ^[0-9]+$ voor een tekenreeks die alleen uit cijfers bestaat.
Volgt deze tester de regex-regels van andere programmeertalen? Dit hulpmiddel gebruikt de reguliere-expressie-engine die in JavaScript is ingebouwd. De meeste basissyntaxis, zoals tekenklassen en kwantoren, is gemeenschappelijk voor talen als Python, Java en Perl. Sommige details verschillen echter, dus een patroon dat hier werkt, gedraagt zich niet gegarandeerd overal hetzelfde.
Referenties
- "Regular expression." Wikipedia, Wikimedia Foundation. https://en.wikipedia.org/wiki/Regular_expression
- MDN Web Docs. "Regular expressions." Mozilla. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
- Friedl, J. E. F. (2006). Mastering Regular Expressions. O'Reilly Media.