Het grote Regex field check topic

Pagina: 1
Acties:
  • 136 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • vinnux
  • Registratie: Maart 2001
  • Niet online
In dit topic staan een aantal regexes waarmee je strings kunt valideren. Er komen er nog veel meer bij en graag zie ik mensen die ook een leuke willen verzinnen met uitgebreide uitleg. Zo hoeft er nooit meer iemand te vragen om regexes.

Hier komen dan de eerste :
Nederlandse postcode
'/^[1-9]{1}[0-9]{3} ?[a-zA-Z]{2}$/'
code:
1
2
3
4
5
6
/^      : begint met
[1-9]{1}    : één numeriek caracter groter dan 0
[0-9]{3}    : gevolgt door drie numerieke caracters
 ?      : gevolgt door eventueel een spatie ( mag ook weggelaten worden)
 [a-zA-Z]{2}  : gevolgt door twee letters uit het alfabet zowel hoofd als kleine letters
 $/      : tevens wordt er geeindigd met voorgaande regel

Opmerkingen :
-

Alfabetische letters
/^[a-zA-Z]+$/
code:
1
2
3
/^       : begint met
[a-zA-Z]+    : één of meerdere letters uit het alfabet zowel hoofd als kleine letters
$/       : tevens wordt er geeindigd met voorgaande regel

Opmerkingen :
-


Integer
/^([\-]?[0]*[1-9]+[0-9]*D|[+]?([0-9]+)$/
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
/^     : begint met
(           :  een 1 serie van
  [\-]?     : één mogelijk - teken
  [0]*       : een serie van nulof meer nullen
  [1-9]+         : en serie van één of meerdere numeriek teken groter dan 0
  [0-9]*         : gevolgt door nul of meerdere numeriek tekens
)           :  (einde serie 1)
|           : of
(           : een 2 serie van
  [+]?       : één mogelijk + teken
  [0-9]+           : één of meerdere numerieke caracters
)           : einde 2 serie
$/         : tevens wordt er geeindigd met voorgaande regel

Opmerkingen :
0 is geldig, -1 geldig, -0 niet geldig, 22 is geldig, +2 is geldig
Double/float
[i/^(([0-9]+(.[0-9]+)?)|(\+[0-9]+(.[0-9]+)?)|(-[0]*[1-9]+[0-9]*(.[0-9]+)?)|(-[0]*(.[0]*[1-9]+[0]*D))$/[/i]
code:
1
VOLGT NOG

Opmerkingen :
Geldig : 0 +0 +100 000100 .00800 -1 -1.0001000 -0000.002

Acties:
  • 0 Henk 'm!

Verwijderd

Ik denk dat een uitleg handiger is.

Acties:
  • 0 Henk 'm!

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Op dinsdag 21 mei 2002 23:04 schreef int het volgende:
Ik denk dat een uitleg handiger is.
We gaan er vanuit dat je de basis snapt aan de hand van de tutorial op http://www.phpbuilder.com/columns/dario19990616.php3 bijvoorbeeld. Met dit topic kun je kijken of je het geleerde beheerst.

Acties:
  • 0 Henk 'm!

Verwijderd

.5 is ook een float.

Acties:
  • 0 Henk 'm!

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 01-09 11:48
Emailadres validator
"[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+"
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/^           : begint met
[A-Za-z0-9_-]+     : minimaal 1 teken uit het alfabet (hoofd
               en kleine letters) of een cijfer of een
               _ of een -
(
  [\.]{1}       : gevolgd door een punt
  [A-Za-z0-9_-]+   : gevolgd door weer één of meerdere tekens
)*           : 0 of meer combinaties
@           : gevolgd door een @
[A-Za-z0-9-]+   : gevolgd door minimaal 1 teken uit het
               alfabet (hoofd of kleine letters) of een
               cijfer of een _ of een -
(
  [\.]{1}       : gevolgd door een punt
  [A-Za-z0-9_-]+   : gevolgd door weer één of meerdere tekens
)+           : 1 of meer combinaties

Opmerkingen :
bla@dinges.com is goed
bla@nogeendinges is fout
.bla@dinges.com is fout
bla.@dinges.com is fout
bla@dinges.com. is fout
bla.1.2.3.4@dinges.1.2.3.4.com is goed

Acties:
  • 0 Henk 'm!

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 01-09 11:48
Double/float
/^[0-9]*(.[0-9]+)?$/
Opmerkingen :
.5 is ook een float
Die komt hier ook door :)

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
-10 is ook een integer :+

grum@tk is ook een valid email address :+

.3e-10 is een valid float :+

Acties:
  • 0 Henk 'm!

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 01-09 11:48
Op woensdag 22 mei 2002 00:02 schreef Grum het volgende:
-10 is ook een integer :+
Ik gebruik in PHP gewoon is_numeric() voor int-checking.. Float-checking eigenlijk.. Maar als ie numeric is en dan if ($var - floor ($var) == 0) overleeft, is ie toch echt wel int (toch? :P) Edit: hmm, in Delphi werktte zoiets niet.. Kweet zo net nog niet over PHP :?
grum@tk is ook een valid email address :+
Ow ja? Werkt dat email-adres ook op internet zelf? Als dat zo is: koel :+
.3e-10 is een valid float :+
En daar was is_numeric() weer :)

Acties:
  • 0 Henk 'm!

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Op woensdag 22 mei 2002 00:02 schreef Grum het volgende:
-10 is ook een integer :+
Aangepast, ook voor doubles en ook het + teken is ok
grum@tk is ook een valid email address :+
Noem mij een geldig email adres waar ik een mailtjes naar toe kan sturen en een reactie krijg en ik voeg hem toe :)
.3e-10 is een valid float :+
ja daar begin ik niet aan !

Acties:
  • 0 Henk 'm!

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 07-10-2022
Het zijn niet bepaald regexes maar om te laten zien dat het definieren van lexicale syntax ook leesbaar kan zijn ( ;) ) hier de floating points van Java zoals je die in een degelijke grammatica-taal kunt schrijven:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
lexical syntax
  FloatingPointDigits ExponentPart?  FloatTypeSuffix? -> FloatingPointLiteral
  Digits -> FloatingPointLiteral {reject}

  Digits? "." Digits? -> FloatingPointDigits
  "."                      -> FloatingPointDigits {reject}
  Digits                  -> FloatingPointDigits

  ExponentIndicator SignedInteger -> ExponentPart

  [eE]    -> ExponentIndicator
  [fFdD] -> FloatTypeSuffix

  Sign? Digits -> SignedInteger
  [\-\+] -> Sign
  [0-9]+ -> Digits

Misschien geeft het aan dat je voor sommige dingen toch eigenlijk een andere notatie zou willen hebben ipv de zeer compacte regex notatie van hierboven. Merk ook op dat hier ook nog de e notatie in zit ;) .

[ Voor 12% gewijzigd door mbravenboer op 29-12-2003 18:27 ]

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Acties:
  • 0 Henk 'm!

Verwijderd

Om te checken of een datum van het juiste formaat is:
code:
1
/^\d{1,2}-\d{1,2}-(\d{2}|\d{4})$/

Dus, 1 of twee cijfers gevolgd door een '-' gevolgd door 1 of 2 cijfers, gevolgd door een '-' en dan twee of vier cijfers.

Acties:
  • 0 Henk 'm!

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 01-09 11:48
Vandaag is het 36-13-2006 |:(

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

vgouw:
[1-9]{1}
{1} heeft geen zin, kun je gewoon weglaten

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • wiho
  • Registratie: Februari 2000
  • Laatst online: 16-09 20:46

wiho

Certified Nerd

Op dinsdag 21 mei 2002 23:23 schreef elviver het volgende:
Emailadres validator
"[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+"
Hmm... ben het niet helemaal eens met je domeinnaam expressie. Jij vindt aaa.bbb.--- een geldige domeinnaam? :)

Dit lijkt me een betere regex:
code:
1
([a-z0-9-]+\.)+[a-z]{2,4}

Oftewel eerst een willekeurig aantal (sub)domeinen, steeds gevolgd door een punt, en tenslotte een toplevel domein van twee tot vier tekens (later wellicht meer, als er nieuwe TLD's worden vrijgegeven).
.bla@dinges.com is fout
bla.@dinges.com is fout
Waarom? Volgens mij is er technisch niets op tegen om een username te beginnen of eindigen met een punt. Ook pietje..puk@dinges.com is een geldig adres, maar komt niet door jouw check heen.
bla@dinges.com. is fout
Nee hoor, het is volkomen legaal om een punt achter een domeinnaam te zetten.

Mijn e-mail check zou er ongeveer zo uitzien:
code:
1
|^[a-z0-9\._-]+@([a-z0-9-]+\.)+[a-z]{2,4}\.?$|i

"Pas als het proces gecrashed is, dumpt men de core"


Acties:
  • 0 Henk 'm!

Verwijderd

Op woensdag 22 mei 2002 09:30 schreef elviver het volgende:
Vandaag is het 36-13-2006 |:(
Wat is nu je punt? Het doel is niet het valideren van de datum, het is kijken of het formaat klopt.

Kijk dan eens naar een willekeurige reguliere expressie voor e-mailadressen, bla@bla.com bestaat toch ook niet?

Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 10:52
cruesli:
Wat is nu je punt? Het doel is niet het valideren van de datum, het is kijken of het formaat klopt.

Kijk dan eens naar een willekeurige reguliere expressie voor e-mailadressen, bla@bla.com bestaat toch ook niet?
Tja, ik vind toch dat je in dit geval het wél kunt controleren, dus moet je dat ook doen. Bij emailadressen is het gewoonweg onmogelijk.

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

ddc:
Bij emailadressen is het gewoonweg onmogelijk.
mx records checken, kan prima ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 29-04 22:59

Defspace

Administrator

voornaam achternaam validatie:

[^A-Z'ÀÁÂÃÄÅÇÈÉÊËÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäçèéêëìíîïòóôõöùúûü ]

voor een replace regex

b.v. Jöép van 't Häck

Acties:
  • 0 Henk 'm!

  • wiho
  • Registratie: Februari 2000
  • Laatst online: 16-09 20:46

wiho

Certified Nerd

Noch het checken of een datum binnen 't geldige bereik ligt, noch het checken van domeinnamen in mailadressen aan de hand van mx-records, is mogelijk met regexps. Een daar gaat het nou net wel over (zie topictitel), dus laten we het tot regexp-checks beperkt houden... ;)

"Pas als het proces gecrashed is, dumpt men de core"


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Op woensdag 22 mei 2002 11:53 schreef Defspace het volgende:
voornaam achternaam validatie:

[^A-Z'ÀÁÂÃÄÅÇÈÉÊËÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäçèéêëìíîïòóôõöùúûü ]

voor een replace regex

b.v. Jöép van 't Häck
Hoe kom je daar nou in vredesnaam bij? Kan ik niet Dámir Iljükanoviç ofzo heten :? Je gaat mij toch niet vertellen wanneer mijn eigen naam goed gespeld is ??

afgezien van het feit dat mijn eigen naam oerhollands is, maar goed :+

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 29-04 22:59

Defspace

Administrator

Hoe kom je daar nou in vredesnaam bij? Kan ik niet Dámir Iljükanoviç ofzo heten Je gaat mij toch niet vertellen wanneer mijn eigen naam goed gespeld is ??
Je kan juist wel Dámir ...... heten.

Maar je kan niet k@e&^e$s238% [ew;'.435][23 heten.

Het gaat om een replace regex.

Dus replace alles in een string wat niet geldig is(zie regex) met ""

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

ah zo. dan mis ik de a-z en een dash volgens mij ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 29-04 22:59

Defspace

Administrator

Tja.. Das idd het rotte aan verschillen in regexen.

Ik werk momenteel in ColdFusion en sindsdien ben ik me ook pas gaan verdiepen in regexxen. Maar bij ColdFusion heb je de functie: ReReplaceNoCase (oftewel A-Z is ook a-z)

Ze zouden dat allemaal eens gelijk moeten trekken, want een heleboel php regexxen doen het niet(zomaar) onder coldfusion, das wel jammer aangezien 99% van hier zich bezig houdt met php.

(coldfusion is beter, kom op ga dat gebruiken jongens, veel betere debug options) :)

Acties:
  • 0 Henk 'm!

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 01-09 11:48
Op woensdag 22 mei 2002 10:34 schreef wiho het volgende:
[..]
Hmm... ben het niet helemaal eens met je domeinnaam expressie. Jij vindt aaa.bbb.--- een geldige domeinnaam? :)
Dit lijkt me een betere regex:
code:
1
([a-z0-9-]+\.)+[a-z]{2,4}

Oftewel eerst een willekeurig aantal (sub)domeinen, steeds gevolgd door een punt, en tenslotte een toplevel domein van twee tot vier tekens (later wellicht meer, als er nieuwe TLD's worden vrijgegeven).
Mee eens :) Erachter bouwen, dat ([A-Za-z]{2,4}) :)
Waarom? Volgens mij is er technisch niets op tegen om een username te beginnen of eindigen met een punt. Ook pietje..puk@dinges.com is een geldig adres, maar komt niet door jouw check heen.
Ben ik het niet mee eens.. Een emailadres als pietje..puk@dinges.com is niet geldig volgens mij
Nee hoor, het is volkomen legaal om een punt achter een domeinnaam te zetten.
Dat mag ook niet volgens mij..

Acties:
  • 0 Henk 'm!

  • wiho
  • Registratie: Februari 2000
  • Laatst online: 16-09 20:46

wiho

Certified Nerd

Op woensdag 22 mei 2002 14:32 schreef elviver het volgende:
Ben ik het niet mee eens.. Een emailadres als pietje..puk@dinges.com is niet geldig volgens mij
Tuurlijk wel. Het hangt er maar net vanaf wat de beheerder van de mailserver voor 't desbetreffende domein als regels hanteert. Maar als jij dat wil, kun je best mail-adressen met meeerdere punten achter elkaar gebruiken. Ik heb 'n net ff uitgetest op mijn eigen domeintje, en 't werkt prima! Overigens zijn er nog meer tekens geldig in een mail-adres, bijvoorbeeld 't plus-teken (+). Dat je zulke adressen nauwelijks tegenkomt, betekent niet dat ze niet geldig zouden zijn...
(..Nee hoor, het is volkomen legaal om een punt achter een domeinnaam te zetten...)

Dat mag ook niet volgens mij..
Sterker nog, als je het helemaal netjes wil doen, moet je zelfs een punt achter een FQDN (fully qualified domain name) zetten! Je mag 'm echter wel weglaten (en dat gebeurt dan ook vrijwel altijd). Ga maar eens naar [url="http://www.tweakers.net."]http://www.tweakers.net.[/url] (let op die laatste punt)...

"Pas als het proces gecrashed is, dumpt men de core"


Acties:
  • 0 Henk 'm!

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14:14

Crazy D

I think we should take a look.

Bij mijn weten is "Pietje Puk"@blah.nl ook geldig, net als bla@[127.0.0.1]
Zonder [] werkt het trouwens ook meestal wel goed alleen dat is volgens mij meer een handigheidje van een aantal mailservers ;)

[edit]
Chello en mijn mdaemon keuren "pietje puk"@... af, ik zal wel ergens verkeerd gelezen hebben dan of zo...

Exact expert nodig?


Acties:
  • 0 Henk 'm!

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 01-09 11:48
Ghe.. Kwort dur helemaal stil van :+ Koel zelfs me eigen domeintje werkt zo :9 Hahaha alleen werkt me cookie niet meer met die . erachter ;)
Pagina: 1