Regexes van tutorial
Auteur: Ibrahim - 24 januari 2007 - 18:46 - Gekeurd door: Rens - Hits: 4543 - 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
<?php
$email = array('test',
'test-test',
'test----test',
'test_test',
'test____test',
'test-sddsds-test',
'test.sdd',
'test.sdd.dssdf'
);
$pattern = '~^[a-zA-Z]{1}[-a-zA-Z0-9_]+(\.[a-zA-Z0-9_-]+)*@[a-zA-Z0-9_-]+\.[a-z]{2,6}$~';
foreach($email as $voorkant)
{
if(preg_match($pattern, $voorkant . '@hotmail.com'))
{
echo '<b>' . $voorkant . '@hotmail.com</b> is succesvol gematched<br />';
}
else
{
echo '<font color="red"><b>' . $voorkant . '@hotmail.com</b></font> is niet gematched.';
}
}
?>
<?php 'test-test', 'test----test', 'test_test', 'test____test', 'test-sddsds-test', 'test.sdd', 'test.sdd.dssdf' ); $pattern = '~^[a-zA-Z]{1}[-a-zA-Z0-9_]+(\.[a-zA-Z0-9_-]+)*@[a-zA-Z0-9_-]+\.[a-z]{2,6}$~'; foreach($email as $voorkant) { if(preg_match($pattern, $voorkant . '@hotmail.com')) { echo '<b>' . $voorkant . '@hotmail.com</b> is succesvol gematched<br />'; } else { echo '<font color="red"><b>' . $voorkant . '@hotmail.com</b></font> is niet gematched.'; } } ?>
Output:
test@hotmail.com is succesvol gematched
test-test@hotmail.com is succesvol gematched
test----test@hotmail.com is succesvol gematched
test_test@hotmail.com is succesvol gematched
test____test@hotmail.com is succesvol gematched
test-sddsds-test@hotmail.com is succesvol gematched
test.sdd@hotmail.com is succesvol gematched
test.sdd.dssdf@hotmail.com is succesvol gematched
test@hotmail.com is succesvol gematched test-test@hotmail.com is succesvol gematched test----test@hotmail.com is succesvol gematched test_test@hotmail.com is succesvol gematched test____test@hotmail.com is succesvol gematched test-sddsds-test@hotmail.com is succesvol gematched test.sdd@hotmail.com is succesvol gematched test.sdd.dssdf@hotmail.com is succesvol gematched
Download code (.txt)
|
|
Stemmen |
Niet ingelogd. |
|