login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Regex (Ereg(i)) (Opgelost)

Offline TotempaaltJ - 23/08/2007 16:48 (laatste wijziging 23/08/2007 17:29)
Avatar van TotempaaltJPHP interesse Ik heb een e-mailcheckcode;
  1. ereg('[a-zA-Z_+.]+[@]+[a-zA-Z0-9.]+[.]+[a-zA-Z]', $_POST['email'])

Maar deze werkt niet:
Als ik bla^bla@email.com invul, zegtie dat het goed is. Vul ik blablaemail.com invul is het fout. Wat is het probleem? 

PS: Eerste keer dat ik met Regex (Zo heet dat toch?) werk!

Edit: Voor als iemand het gaat zeggen: Ik heb gezocht op PHP bij de ereg functie, en de eregi functie, maar nergens staat hoe ik de tekens moet gebruiken. En op SiMa is ook geen Tut, wat ik eerst wilde doen!

7 antwoorden

Gesponsorde links
Offline Rik - 23/08/2007 16:55 (laatste wijziging 23/08/2007 16:55)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Een . staat voor een willekeurig teken, daarom kan je alle tekens gebruiken. Als je letterlijk een punt wilt matchen moet je hem escapen, dus "\.". 
Offline TotempaaltJ - 23/08/2007 16:58
Avatar van TotempaaltJ PHP interesse Maakt geen verschil! 
Offline Rik - 23/08/2007 17:06 (laatste wijziging 23/08/2007 17:07)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Het is misschien handig om PHP.net: preg_match te gebruiken. Dan kan je in plaats van [a-z0-9_] \w gebruiken, en als je wilt dat de hele input matcht kan je de regex tussen ^ en $ zetten. Case insensitive doe je door de pattern modifier i toe te voegen:
  1. /^[\w+\.]+@[\w\.]+\.[a-zA-Z]+$/i
De / die op het begin en op de op één na achterste plek staat zijn delimiters. Die moeten er altijd staan bij preg_match (je kan ook andere gebruiken als # ~ of !).

Edit:
Links toegevoegd.
Offline Stijn - 23/08/2007 17:12
Avatar van Stijn PHP expert @Boukefalos en wat met e-mails als stijn.leenknegt@server.com ?
Offline TotempaaltJ - 23/08/2007 17:18 (laatste wijziging 23/08/2007 17:24)
Avatar van TotempaaltJ PHP interesse ... Ik snap het, denk ik:
/ Die snap ik nog niet helemaal...
^ Begin lijn.
[ - ] Eerste deel, met daartussen: \w = a-z0-9_ en +\. = + .
Dan een apestaartje.
Dan weer hetzelfde, behalve dat er geen + is/ Enz...
Dan aan het einde, +$, dus einde van de regel (String?).
En dan i voor hoofdletter case insensitive... Toch?

(Ik wil graag ook snappen wat ik doe! )

Edit:Voor de geinterreseerde: Ik heb nu dit:
  1. preg_match('/^[\w+\.]+@[a-z0-9\-]+.[a-z]+$/i', $_POST['email'])
En het werkt!  
Offline Rik - 23/08/2007 17:22 (laatste wijziging 23/08/2007 17:27)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Ehm, die pakt ie gewoon hoor...

BTW: Dit is ook niet de best denkbare regex voor een mail adres. Je kan nu nog steeds zat ongeldige adressen opgeven. Ik wil alleen Bigboss' regex niet te veel aanpassen omdat het dan niet meer 'zijn' oefenregex is.

Edit:
Bigboss schreef:
Ik wil graag ook snappen wat ik doe!
Goede instelling. Klopt wel wat je zegt. Goed tutorials om verder te leren vind je @ http://www.regular-expressions.info/
Offline TotempaaltJ - 23/08/2007 17:28
Avatar van TotempaaltJ PHP interesse Oké! Bedankt! Opgelost knopje! 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.189s