Regex-spiekbriefje
Reguliere expressies zijn compact genoeg zodat de syntaxis gemakkelijker op te zoeken is dan te onthouden. Deze pagina is het geheel op één scherm – klassen, kwantoren, ankers, groepen, lookaround, escape en de vlaggen – met een werkend voorbeeld voor elke rij.
De smaak is JavaScript, wat in uw browser draait en wat de regex-tester op deze site gebruikt. Het meeste is identiek in Python, Java, Go en PCRE; waar smaken uiteenlopen, lopen ze uiteen aan de randen - kijk achter de ondersteuning, syntaxis van benoemde groepen en of \d "ASCII-cijfer" of "een Unicode-cijfer" betekent.
Twee dingen zijn verantwoordelijk voor de meeste verrassingen. Kwantificeerders zijn hebzuchtig: ze nemen alles wat ze kunnen en geven het alleen terug als de rest van het patroon faalt. Daarom slikt <.+> twee tags in en <.+?> niet. En afwisseling is het meest bindend, dus ^a|b$ betekent "begint met a, of eindigt met b" - niet wat de meeste mensen bedoelen als ze het schrijven.
Karakter klassen
De afkortingen zijn alleen ASCII, tenzij u de vlag u toevoegt en Unicode-eigenschaps-escapes gebruikt.
| Syntaxis | Betekenis | Voorbeeld |
|---|---|---|
| . | Elk teken behalve een regeleindeVoeg de s-vlag toe om deze ook met nieuwe regels te laten overeenkomen. | /a.c/"abc" → "abc" |
| \d | Een cijfer, 0–9 | /\d+/"order 42" → "42" |
| \D | Alles wat geen cijfer is | /\D+/"42abc" → "abc" |
| \w | Letter, cijfer of onderstrepingstekenAlleen ASCII — "é" is niet \w. | /\w+/"user_1!" → "user_1" |
| \W | Alles \w komt niet overeen | /\W+/"a++b" → "++" |
| \s | Elke witruimte, inclusief tabbladen en nieuwe regels | /\s+/"a \t b" → " \t " |
| \S | Elk teken dat geen witruimte bevat | /\S+/" hi" → "hi" |
| [abc] | Elk van de genoemde karakters | /[aeiou]/"rhythm and" → "a" |
| [^abc] | Elk teken behalve de vermelde tekens | /[^aeiou ]+/"aeiou xyz" → "xyz" |
| [a-z] | Een scala aan karakters | /[a-f]+/"zzabcz" → "abc" |
| \p{L} | Elke Unicode-letter (vereist de u-vlag) | /\p{L}+/"42 café" → "café" |
Kwantificatoren
Deze zijn allemaal van nature hebzuchtig: ze nemen zoveel als ze kunnen en geven alleen terug als de rest van het patroon mislukt.
| Syntaxis | Betekenis | Voorbeeld |
|---|---|---|
| * | Nul of meer | /ab*/"a" → "a" |
| + | Eén of meer | /ab+/"abbb" → "abbb" |
| ? | Nul of één: maakt het optioneel | /colou?r/"color" → "color" |
| {3} | Precies drie | /\d{3}/"id 12345" → "123" |
| {2,} | Twee of meer | /a{2,}/"aaa" → "aaa" |
| {2,4} | Tussen twee en vier | /a{2,4}/"aaaaa" → "aaaa" |
| *? | Lui – neemt zo min mogelijkDe hebzuchtige <.+> zou beide tags inslikken. | /<.+?>/"<a><b>" → "<a>" |
Ankers en grenzen
Deze komen overeen met een positie, niet met een personage, dus ze verbruiken niets.
| Syntaxis | Betekenis | Voorbeeld |
|---|---|---|
| ^ | Begin van de string, of van een lijn met de m-vlag | /^a/"abc" → "a" |
| $ | Einde van de string, of van een regel met de m-vlag | /c$/"abc" → "c" |
| \b | Een woordgrensDit is wat het matchen van "cat" binnen "concatenate" verhindert. | /\bcat\b/"the cat sat" → "cat" |
| \B | Geen woordgrens | /\Bcat/"concatenate" → "cat" |
Groepen en afwisseling
| Syntaxis | Betekenis | Voorbeeld |
|---|---|---|
| (abc) | Groep vastleggen - herinnerd voor vervanging | /(\d+)-(\d+)/"10-20" → "10-20" |
| (?:abc) | Groeperen zonder vastleggenGebruik dit als u alleen de groepering nodig heeft; het houdt de vastgelegde cijfers betekenisvol. | /(?:ab)+/"abab" → "abab" |
| (?<name>…) | Genoemde opnamegroep | /(?<year>\d{4})/"in 2026" → "2026" |
| a|b | Beide kanten – afwisselingAfwisseling heeft de laagste prioriteit: ^a|b$ is "^a" of "b$", niet "^(a|b)$". | /cat|dog/"one dog" → "dog" |
| \1 | Terugverwijzing naar de eerste groep | /(\w)\1/"letter" → "tt" |
Kijk rond
Beweringen over wat een standpunt omringt. Ze matchen zelf met niets en dat maakt ze veilig te combineren.
| Syntaxis | Betekenis | Voorbeeld |
|---|---|---|
| (?=…) | Vooruitblik – gevolgd door dit | /\d+(?= kg)/"80 kg" → "80" |
| (?!…) | Negatieve vooruitblik – niet gevolgd door dit | /\d+(?! kg)/"80 lb" → "80" |
| (?<=…) | Kijk achterom – voorafgegaan door dit | /(?<=\$)\d+/"costs $40" → "40" |
| (?<!…) | Negatieve lookbehind – niet voorafgegaan door dit | /(?<!\$)\b\d+/"about 40" → "40" |
Ontsnappen
Deze twaalf karakters zijn degenen die een backslash nodig hebben om letterlijk te worden opgevat.
| Syntaxis | Betekenis | Voorbeeld |
|---|---|---|
| \. | Een letterlijke stip | /\d\.\d/"v2.5" → "2.5" |
| \\ | Een letterlijke terugslag | /\\/"C:\\dir" → "\\" |
| \n | Een lijnfeed | /a\nb/"a\nb" → "a\nb" |
| \t | Een tabblad | /a\tb/"a\tb" → "a\tb" |
| \uFFFF | Een teken op basis van zijn codepunt | /\u00e9/"café" → "é" |
Vlaggen
| Vlag | Naam | Betekenis |
|---|---|---|
| g | Globaal | Vind elke match, niet alleen de eerste. |
| i | Negeer casus | Match ongeacht hoofdletters of kleine letters. |
| m | Meerdere regels | Zorgt ervoor dat ^ en $ bij elk regeleinde overeenkomen in plaats van alleen aan het einde van de tekenreeks. |
| s | Punt allemaal | Laten we. wedstrijdregeleinden ook. |
| u | Unicode | Behandelt het patroon als codepunten en maakt ontsnappingen van de eigenschap \p{...} mogelijk. |
| y | Kleverig | Komt alleen overeen met precies de laatsteIndex, zoekt nooit vooruit. |