PHP regular expressions E-mail validation

Pagina: 1
Acties:

  • winand
  • Registratie: April 2000
  • Laatst online: 26-08 08:37
PHP:
1
<?function validateEmail($email) {return ereg("^[a-zA-Z0-9\-\.\_]+@[a-zA-Z0-9\-\.\_]+\.[a-zA-Z]+$", $email);}?>

Werkt prima, alleen een emailadres met een - (minnetje) returns false?
Hoe verwerk ik dit dan in mijn regexp :?

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 08-09 17:10
PHP:
1
<?function CheckEmail($email) {    return ereg(       "[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+",       $email); } ?>

Letterlijk van PHPFreakz.com af

  • winand
  • Registratie: April 2000
  • Laatst online: 26-08 08:37
Okey, opgelost:
PHP:
1
<?function validateEmail($email) {        return ereg("^[a-zA-Z0-9_-\.\_]+@[a-zA-Z0-9_-\.\_]+\.[a-zA-Z]+$", $email);}?>

voor de - komt nu een _ ipv een \
bedankt voor alle reacties ! :)

Verwijderd

1. volgens mij hoef je deze _ niet te escapen
2. ik zet altijd de - aan t eind van de character range, dat gaat nagenoeg altijd goed.

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 08-09 17:10
Die ik postte gaat een stuk beter volgens mij hoor... Jouwe geeft ook true als ik .Jantje.Smit.@.Zonnet.nl invul, wat dus géén geldig email-adres is

  • winand
  • Registratie: April 2000
  • Laatst online: 26-08 08:37
Klopt, deze gebruik ik nu :)
bedankt voor de tip

  • Grum
  • Registratie: Juni 2001
  • Niet online
Kan iemand me uitleggen wat
code:
1
[\.]{1}

precies doet dan ? >:)

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 08-09 17:10
Op donderdag 02 mei 2002 11:02 schreef Grum het volgende:
Kan iemand me uitleggen wat
code:
1
[\.]{1}

precies doet dan ? >:)
Niets meer dan [\.] lijkt me? Maar ik ben ook de luiheid zelve.. Deze is direct van www.phpfreakz.com geripped :P

  • Grum
  • Registratie: Juni 2001
  • Niet online
en wat doet
code:
1
[\.]

dan ? >:)

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 08-09 17:10
Zeggen dat er een punt moet staan? Zelfde als \. zeker..

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Grum:
en wat doet
code:
1
[\.]

dan ? >:)
volgens mij doet pcre sowieso de volgende character escapen wanneer de backslash zelf niet ge-escaped is... maar dat weet ik niet zeker. Test 't even uit zou ik zeggen ;)

in dat geval zou het dus hetzelfde zijn als
code:
1
[.]

of
code:
1
\.

Maar ik vind dat dit een parse error zou moeten geven

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


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

[\.]{1} is echt heel simpel: er mag maar 1 punt staan.

dinges.dinges@dinges.com is dus goed
dinges..dinges@dinges.com vanzelfsprekend niet...
{1} geeft repeats aan.

Dus:
{3} betekend dat het 3x moet voorkomen achter elkaar
{3,7} betekend dat het minimaal 3, maximaal 7x achter elkaar moet staan
{3,} betekend 3x of meer
{,3} bestaat ook nog maar die vind ik maar vaag

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 17:08

Knutselsmurf

LED's make things better

Op donderdag 02 mei 2002 11:53 schreef MUBA het volgende:
[\.]{1} is echt heel simpel: er mag maar 1 punt staan.

dinges.dinges@dinges.com is dus goed
dinges..dinges@dinges.com vanzelfsprekend niet...
{1} geeft repeats aan.

Dus:
{3} betekend dat het 3x moet voorkomen achter elkaar
{3,7} betekend dat het minimaal 3, maximaal 7x achter elkaar moet staan
{3,} betekend 3x of meer
{,3} bestaat ook nog maar die vind ik maar vaag
Die laatste betekent toch 0-3 keer?

- This line is intentionally left blank -


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

[\.] levert zowel true op bij \ als . meen ik ;)

even testen.

Vaag, dat ZOU het wel moeten, aangezien de . niet geescaped hoeft/mag worden.
Op donderdag 02 mei 2002 11:53 schreef MUBA het volgende:
[\.]{1} is echt heel simpel: er mag maar 1 punt staan.
Waardoor de {1} overbodig is.
{,3} bestaat ook nog maar die vind ik maar vaag
Die laatste kende ik nog niet...

  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Op donderdag 02 mei 2002 11:55 schreef Knutselsmurf het volgende:
[..]
Die laatste betekent toch 0-3 keer?
Nee want dan zou je gewoon moeten schrijven {0,3} - minnimaal 0x, maximaal 3x.
In de tutorial die ik gelezen heb stond dit:
Mag maximaal 3x voorkomen, maar moet niet voorkomen.

Jah leg dat maar eens uit dan.

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


Verwijderd

binnen een character class [ ] heeft de . geen speciele functie toch, maar staat toch gewoon voor een . als leesteken :?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

PHP:
1
<?preg_match('_[\.]{,3}_', ' test', $matches);preg_match('_[\.]{,3}_', '. test', $matches);preg_match('_[\.]{,3}_', '.. test', $matches);preg_match('_[\.]{,3}_', '... test', $matches);preg_match('_[\.]{,3}_', '.... test', $matches);?>

Geven allemaal false hierzo...

  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Op donderdag 02 mei 2002 11:59 schreef DarthRaider het volgende:
binnen een character class [ ] heeft de . geen speciele functie toch, maar staat toch gewoon voor een . als leesteken :?
* muba grinnikt.
Ja!

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op donderdag 02 mei 2002 12:00 schreef MUBA het volgende:
* muba grinnikt.
Ja!
En toch wordt die escaping WEL gebruikt... Lekker inconsistent.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

MUBA:
Mag maximaal 3x voorkomen, maar moet hoeft niet voor te komen.

Jah leg dat maar eens uit dan.
Euhh niet voorkomen == 0x
negatief aantal keer voorkomen kan niet dus {,x} gewoon maximaal x, maar niet verplicht. Oftewel {,x} == {0,x}
ACM:
Vaag, dat ZOU het wel moeten, aangezien de . niet geescaped hoeft/mag* drm worden.
* drm ik kies voor 'mag' :)

Maar zoals ik al zei: volgens mij doet pcre sowieso de volgende character escapen wanneer de backslash zelf niet is ge-escaped.

bijvoorbeeld:
[abcde\-]

Hier hoeft de - niet geescaped te worden, maar waarom zou het fout zijn? ;)

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


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Op donderdag 02 mei 2002 12:00 schreef ACM het volgende:
PHP:
1
<?preg_match('_[\.]{,3}_', ' test', $matches);preg_match('_[\.]{,3}_', '. test', $matches);preg_match('_[\.]{,3}_', '.. test', $matches);preg_match('_[\.]{,3}_', '... test', $matches);preg_match('_[\.]{,3}_', '.... test', $matches);?>

Geven allemaal false hierzo...
Hrrmz... jah ik doe niet aan PHP, maar dit stukje Perl is ook allemaal false:
code:
1
2
3
4
5
print ((" hallo" =~ m/y{,3}/) or "false");
print (("y hallo" =~ m/y{,3}/) or "false");
print (("yy hallo" =~ m/y{,3}/) or "false");
print (("yyy hallo" =~ m/y{,3}/) or "false");
print (("yyyy hallo" =~ m/y{,3}/) or "false");

M.a.w. {,3} is gewoon vaag, zoals ik al zei }:O

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op donderdag 02 mei 2002 12:06 schreef MUBA het volgende:
M.a.w. {,3} is gewoon vaag, zoals ik al zei }:O
Blijkbaar is het niet valide regexp dan? :)

  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Op donderdag 02 mei 2002 12:07 schreef ACM het volgende:

[..]

Blijkbaar is het niet valide regexp dan? :)
Goed mogelijk :D
Maar {3,} is dat wel. En ik vraag me dus af waarom dat in de regexp tutor stond dan.

Mjah misschien was die tutor wel vaag... njah dat in elk geval, dat weet ik nog wel.

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • Grum
  • Registratie: Juni 2001
  • Niet online
{,3} is geen quantifier, ik GOK dat \.{,3} een valid match geeft op: .{,3} :D

[\.]{1} gaat nergens over en is 100% identiek aan \.

de . moet escaped worden tussen []'s omdat je ook dit kan doen:
code:
1
[.\r\n] (alles incl newlines/linefeeds - als je de modifiers niet (geheel) wilt gebruiken)

  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

* muba respecteerd de perso(o)n(en) die regexp hebben gemaakt.

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea

Pagina: 1