Reguliere expressies en gegevensvalidatie in formulieren

Reguliere expressies en gegevensvalidatie in formulieren

Wat zijn reguliere expressies en hoe gebruik je ze?

Een reguliere expressie, of regex, is een patroon dat een bepaalde hoeveelheid tekst beschrijft. Als je er bijvoorbeeld zeker van wilt zijn dat iemand die een formulier invult precies de gewenste tekst invoert, kun je een reguliere expressie gebruiken om een ​​bepaald patroon in de invoer af te dwingen of om de gegevens te valideren.

Laten we als voorbeeld nemen dat u een Brits nationaal verzekeringsnummer (NIN) wilt opvragen. Dit nummer heeft een patroon van 2 tekens, gevolgd door 6 cijfers, gevolgd door nog een teken. Een reguliere expressie die overeenkomt met dit patroon zou er als volgt uitzien:

[az|AZ]{2}[0-9]{6}[az|AZ]

Hier betekent [az] "elk willekeurig kleinletterteken", [AZ] betekent "elk willekeurig hoofdletterteken", | betekent of, dus [az|AZ] betekent "elk willekeurig teken", {2} betekent "tweemaal herhalen", enzovoort.

Sommige overheden bieden reguliere expressies aan voor veelgebruikte patronen. Zie bijvoorbeeld dit Wikipedia- artikel over Britse postcodes.

Voor een snel overzicht van reguliere expressies kunt u zoeken naar een 'Handleiding voor reguliere expressies' of verder lezen.

Karakter

Legende

Voorbeeld

Voorbeeldovereenkomst

\D

De meeste motoren: één cijfer
van 0 tot 9

bestand_\d\d

bestand_25

\D

.NET, Python 3: één Unicode-cijfer in elk script

bestand_\d\d

bestand_9੩

\w

De meeste engines: "woordteken": ASCII-letter, cijfer of underscore

\w-\w\w\w

A-b_1

\w

.Python 3: "woordteken": Unicode-letter, ideogram, cijfer of underscore

\w-\w\w\w

字-ま_۳

\w

.NET: "woordteken": Unicode-letter, ideogram, cijfer of verbindingsteken

\w-\w\w\w

字-ま‿۳

\S

De meeste engines: "witruimtekarakter": spatie, tab, nieuwe regel, wagenretour, verticale tab

a\sb\sc

ab
C

\S

.NET, Python 3, JavaScript: "witruimtekarakter": elk Unicode-scheidingsteken

a\sb\sc

ab
C

\D

Eén teken dat geen cijfer is volgens de definitie van uw engine \d

\D\D\D

abc

\W

Eén teken dat geen woordteken is zoals gedefinieerd door de \w- functie van uw engine.

\W\W\W\W\W

*-+=)

\S

Eén teken dat geen witruimteteken is zoals gedefinieerd door de \s van uw engine.

\S\S\S\S

Jojo

Kwantoren

Kwantificator

Legende

Voorbeeld

Voorbeeldovereenkomst

+

Een of meer

Versie \w-\w+

Versie A-b1_1

{3}

Precies drie keer

\D{3}

abc

{2,4}

Twee tot vier keer

\d{2,4}

156

{3,}

Drie of meer keer

\w{3,}

regex_tutorial

*

Nul of meer keer

ABC*

AAACC

?

Eenmalig of nooit

meervoud?

meervoud

Meer personages

Karakter

Legende

Voorbeeld

Voorbeeldovereenkomst

.

Elk teken behalve een regeleinde.

ac

abc

.

Elk teken behalve een regeleinde.

.*

Ach ja, maakt niet uit.

\ .

Een punt (speciaal teken: moet worden voorafgegaan door een \)

a\.c

ac

\

Ontsnapt aan een speciaal personage

\.\*\+\? \$\^\/\\

.*+? $^/\

\

Ontsnapt aan een speciaal personage

\[\{\(\)\}\]

[{()}]

Logica

Logica

Legende

Voorbeeld

Voorbeeldovereenkomst

|

Alternatie / OF-operand

22|33

33

( … )

Opnamegroep

A(nt|apple)

Apple (een woordspeling op "pple")

\1

Inhoud van Groep 1

r(\w)g\1x

reguliere expressie

\2

Inhoud van Groep 2

(\d\d)\+(\d\d)=\2\+\1

12+65=65+12

(?: … )

Niet-vangende groep

A(?:nt|pple)

Appel

Meer witruimte

Karakter

Legende

Voorbeeld

Voorbeeldovereenkomst

\T

Tab

T\t\w{2}

Tab

\R

Wagenretourteken

zie hieronder

\N

Regeleinde-teken

zie hieronder

\r\n

Regelscheider in Windows

AB\r\nCD

AB
CD

\N

Perl, PCRE (C, PHP, R…): één teken dat geen regeleinde is

\N+

abc

\H

Perl, PCRE (C, PHP, R…), Java: één horizontaal witruimteteken: tab of Unicode-spatie als scheidingsteken.

\H

Eén teken dat geen horizontale spatie is.

\v

.NET, JavaScript, Python, Ruby: verticaal tabblad

\v

Perl, PCRE (C, PHP, R…), Java: één verticaal witruimteteken: regeleinde, wagenretour, verticale tab, formulierdoorvoer, alinea- of regelafscheider

\V

Perl, PCRE (C, PHP, R…), Java: elk teken dat geen verticale spatie is

\R

Perl, PCRE (C, PHP, R…), Java: één regelovergang (carriage return + line feed-combinatie, en alle tekens die overeenkomen met \v)

Meer kwantoren

Kwantificator

Legende

Voorbeeld

Voorbeeldovereenkomst

+

De + (één of meer) staat voor "hebzuchtig".

\d+

12345

?

Maakt kwantoren "lui".

\d+?

1 op 1 2345

*

De * (nul of meer) is "hebzuchtig".

A*

AAA

?

Maakt kwantoren "lui".

A*?

leeg in AAA

{2,4}

Twee tot vier keer, "hebzuchtig"

\w{2,4}

abcd

?

Maakt kwantoren "lui".

\w{2,4}?

ab in ab cd

Personageklassen

Karakter

Legende

Voorbeeld

Voorbeeldovereenkomst

[ … ]

Een van de tekens tussen haakjes

[AEIOU]

Eén hoofdletterklinker

[ … ]

Een van de tekens tussen haakjes

Top

Tik of Top

-

Bereikindicator

[az]

Eén kleine letter

[xy]

Een van de tekens in het bereik van x tot y

[AZ]+

GEWELDIG

[ … ]

Een van de tekens tussen haakjes

[AB1-5w-z]

Een van de volgende opties: A, B, 1, 2, 3, 4, 5, w, x, y, z

[xy]

Een van de tekens in het bereik van x tot y

[ -~]+

Tekens in het afdrukbare gedeelte van de ASCII-tabel .

[^x]

Eén teken dat geen x is

[^az]{3}

A1!

[^xy]

Een van de tekens ligt niet binnen het bereik van x tot y.

[^ -~]+

Tekens die niet voorkomen in het afdrukbare gedeelte van de ASCII-tabel .

[\d\D]

Een teken dat een cijfer of een niet-cijfer is.

[\d\D]+

Alle personages, inclusief-
inclusief nieuwe regels, die niet overeenkomen met de normale stip

[\x41]

Komt overeen met het teken op hexadecimale positie 41 in de ASCII-tabel, oftewel de letter A.

[\x41-\x45]{3}

ABE


Ankers en grenzen

Anker

Legende

Voorbeeld

Voorbeeldovereenkomst

^

Begin van de tekenreeks of begin van de regel, afhankelijk van de modus voor meerdere regels. (Maar wanneer [^inside brackets], betekent dit "niet").

^abc .*

abc (begin van de regel)

$

Einde van de tekenreeks of einde van de regel, afhankelijk van de modus voor meerdere regels. Veel subtiliteiten die per engine verschillen.

.*? het einde$

dit is het einde

\A

Begin van de string
(alle belangrijke motoren behalve JS)

\Aabc[\d\D]*

abc (string...
...begin)

\z

Helemaal aan het einde van de snaar
Niet beschikbaar in Python en JavaScript.

het einde\z

dit is...\n... het einde

\Z

Einde van de tekenreeks of (behalve in Python) vóór de laatste regelafbreking
Niet beschikbaar in JS

het einde\Z

Dit is...\n... het einde \n

\G

Begin van de tekenreeks of einde van de vorige overeenkomst
.NET, Java, PCRE (C, PHP, R…), Perl, Ruby

\B

Woordgrens
De meeste engines: positie waarbij slechts één kant een ASCII-letter, cijfer of underscore is.

Bob.*\bcat\b

Bob heeft de kat opgegeten

\B

Woordgrens
.NET, Java, Python 3, Ruby: positie waar slechts één zijde een Unicode-letter, -cijfer of -underscore is.

Bob.*\b\кошка\b

Bob at de koshka

\B

Geen woordgrens

c.*\Bcat\B.*

navolgers

We use cookies to enhance your browsing experience and analyze site traffic. By clicking "Accept", you consent to our use of cookies. Privacy Policy