login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Reguliere expressies > Regexes van tutorial

Regexes van tutorial

Auteur: Ibrahim - 24 januari 2007 - 18:46 - Gekeurd door: Rens - Hits: 4556 - Aantal punten: 4.50 (1 stem)



Hey,

Ik heb eens zitten kijken door de scriptlib, en vond deze categorie. Een paar mensen vroegen al of ik de antwoorden op de vragen in mijn tutorial eens kon posten.

Nou hier is de eerste, de email regex. Meer zullen volgen, maar ik heb nu even geen zin 

Code:
1. Maak een email regex (en niet stiekem in de script library kijken)

- Vóór de @pestaartje mogen de volgende tekens 1 of meer voorkomen (uitgaand van een hotmail adres):

-> moet beginnen met een letter
-> moet 2 of meer tekens bevatten
-> a t/m z of A-Z
-> 0-9
-> punt => . (dit mag maar 1 zijn en moet tussen een tekenreeks zitten)
-> streep => -
-> onderstreep => _

- Dan komt er een @pestaartje, en dit mag maar 1tje zijn.
- Daarna moet er een tekenreeks komen 1 of meer bestaande uit de volgende tekens:

-> a-z
-> 0-9
-> streep => -
-> onderstreep => _

- Daarna de extensie. Ik heb op een site gelezen dat de langste extensie 6 tekens is, dus gebruiken wij hier {2,6}. Wil je langere/kortere extensies toelaten, verander de 6 dan in de cijfer naar keuze.


Nu we dit weten, kunnen we de regex opbouwen:

~^[a-zA-Z]{1}[-a-zA-Z0-9_]+(\.[a-zA-Z0-9_-]+)*@[a-zA-Z0-9_-]+\.[a-z]{2,6}$~

Ik heb deze regex niet getest op alle mogelijke email adressen, maar hij zal zeker wel een hotmail adres kunnen matchen. Vind iemand een email adres dat niet gematched word, post dan een reactie en vertel het me dan voeg ik het aan deze array toe, nadat ik de regex heb aangepast om die email te matchen 


  1. <?php
  2.  
  3. $email = array('test',
  4. 'test-test',
  5. 'test----test',
  6. 'test_test',
  7. 'test____test',
  8. 'test-sddsds-test',
  9. 'test.sdd',
  10. 'test.sdd.dssdf'
  11. );
  12.  
  13. $pattern = '~^[a-zA-Z]{1}[-a-zA-Z0-9_]+(\.[a-zA-Z0-9_-]+)*@[a-zA-Z0-9_-]+\.[a-z]{2,6}$~';
  14.  
  15. foreach($email as $voorkant)
  16. {
  17. if(preg_match($pattern, $voorkant . '@hotmail.com'))
  18. {
  19. echo '<b>' . $voorkant . '@hotmail.com</b> is succesvol gematched<br />';
  20. }
  21. else
  22. {
  23. echo '<font color="red"><b>' . $voorkant . '@hotmail.com</b></font> is niet gematched.';
  24. }
  25. }
  26. ?>


Output:

  1. test@hotmail.com is succesvol gematched
  2. test-test@hotmail.com is succesvol gematched
  3. test----test@hotmail.com is succesvol gematched
  4. test_test@hotmail.com is succesvol gematched
  5. test____test@hotmail.com is succesvol gematched
  6. test-sddsds-test@hotmail.com is succesvol gematched
  7. test.sdd@hotmail.com is succesvol gematched
  8. test.sdd.dssdf@hotmail.com is succesvol gematched
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (2)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.037s