|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Bonjour,
Je viens de trouver cette expression régulière, servant à vérfier la conformité de la forme d'une adresse email : Code :
preg_match( "/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-z]{2,4}$/", $_POST["mail"] ) Par exemple, je viens de constater qu'un email tel que bob@bob..com peut passer, mais je ne crois pas que ce soit un standard valide pourtant. 2) Aussi, si vous pouviez me filer l'expression régulière permettant de vérifier qu'il n'y a que des lettres dans un champs, ce serait sympa (Peut être : Code :
preg_match("/^[a-zA-z],$_POST["mail"]) 3) Je voudrais bien comprendre ce que signifie le {2,} et le {2,4} dans l'expression d'en haut. Merci pour vos lumières. |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Je viens d'essayer cela pour vérifier si il n'y a que des lettres :
Code :
if(preg_match( "/^[a-zA-Z]$/", $_POST["identite"] )) |
|
|
00
|
|
|
#3 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
je viens d'essayer cela :
Code :
if(preg_match( "/^[:alpha:]+$/", $_POST["identite"] )) Code :
Warning: preg_match(): Compilation failed: POSIX named classes are supported only within a class at offset 1 in /home/site/scripts/dico/envoiMail.php on line 10 Code :
if(preg_match( "^[:alpha:]+$", $_POST["identite"] )) Code :
Warning: preg_match(): No ending delimiter '^' found in /home/site/scripts/dico/envoiMail.php on line 10 |
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Bon maintenant je viens d'essayer cela :
Code :
if(preg_match( "/^[A-Za-z]+$/", $_POST["identite"] )) *edit* ça fait un peu de la peine de s'auto répondre. |
|
|
00
|
|
|
#5 | |
|
Membre Expert
![]() Inscription : juillet 2004 Messages : 1 033 ![]() |
Citation:
{2,} signifie "au moins deux fois" {2,4} signifie "au moins deux fois, jusqu'à quatre fois" Ceci s'applique a l'élément précédent. donc [a-z]{2,} signifie "au moins deux carateres de a à z" Code :
2) Aussi, si vous pouviez me filer l'expression régulière permettant de vérifier qu'il n'y a que des lettres dans un champs, ce serait sympa Je pense que sa donne : preg_match("[a-zA-z]",$_POST["mail"]) |
|
|
|
00
|
|
|
#6 | ||
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Merci ePox pour ta réponse, je commencais à désespérer.
Cela étant je viens d'essayer, cela, inspiré par ton expression régulière: Code :
|
||
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Inscription : juillet 2004 Messages : 1 033 ![]() |
y'à quoi dans post["identite"] ?
|
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Et bien comme j'ai dit, j'ai écrit test.
je viens d'essayer cela (réessayer?) : Code :
preg_match( "`^[a-zA-Z]`" ,$_POST["identite"]) Code :
Warning: preg_match(): No ending delimiter '^' found in /home/site/scripts/dico/envoiMail.php on line 10 C'est vraiment pénible de passer 3 heures pour une broutille comme ça... |
|
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() Inscription : juillet 2004 Messages : 1 033 ![]() |
Code :
|
||
|
|
00
|
|
|
#10 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Oui et non :
Il y a un problème avec les majuscules, selon leur position : -'Test test' fonctionne bien. -'test Test' ne fonctionne pas. Les chiffres sont bien filtrés par contre. (En plus il faudrait prendre en compte les accents). Bien sur je peux tout passer par strtolower avant et virer tous les accents. Mais c'est bidon, normalement une bonne régex doit régler tout ça à elle seule. **edit** Que signifie ton *$, ePox ? J'ai essayé avec a-zA-Z aussi, même problème avec les majuscules. |
|
|
00
|
|
|
#11 | ||
|
Membre Expert
![]() Inscription : juillet 2004 Messages : 1 033 ![]() |
Le étoile c'est pour dire qu'il peut y avoir 0 à n occurences.
Le dollar, c'est poure dire que la chaine doit terminer par tel schéma, c'est le complémentaire du chapeau. Pour les accents je ne sais pas torp comment faire sans se prendre la tête :s Mais sa pourrait donner cela : Code :
|
||
|
|
00
|
|
|
#12 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Non c'est caca, même les chiffres passent.
Bon, je vais essayer le truc pourri qui consiste à virer d'abord les accents et à tout passer en minuscule et après je vous dis si je sais voler. |
|
|
00
|
|
|
#13 | ||
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Je viens de tester cela :
Code :
|
||
|
|
00
|
|
|
#14 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
C'est réellement insupportable, je viens d'essayer cela :
Code :
preg_match("`[[:alpha:]]`" ,$identite2) |
|
|
00
|
|
|
#15 | ||||||
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Salut
Désolé pour le temps de réponse : pour ma part, je n'ai pas le Net en permanence. Essaie avec ceci : Code :
Cela dit, je n'ai pas lu la RFC donc l'expression peut être erronnée... Si tu ne souhaites pas t'embêter avec les problèmes de casse, utilise le modificateur "i". Pour vérifier qu'il n'y a que des lettres dans une chaîne, utilise ceci : Mais cela ne te donnera que les lettres de l'aplhabet anglais... Si tu veux en ajouter, voici la marche à suivre : Si tu utilises preg_..., alors tu dois utiliser un délimiteur en début et en fin d'expression. Ce délimiteur peut être n'importe quoi mais tu dois le mettre de chaque côté de ton expression : Code :
En revanche, je ne peux pas t'aider pour l'utilisation des classes comme :alpha:, je ne les aime pas trop (je les trouve incomplètes). Et il me semble absurde de devoir donner au moins autre chose (ici : "a") pour être en mesure d'utiliser ces classes POSIX... Je te recommande d'utiliser le modificateur "i" plutôt que de mettre des classes du genre [a-zA-Z] car c'est plus facile à modifier alors que ça revient au même. Cependant, je ne sais pas si ce modificateur fonctionne pour les caracères spéciaux ou accentués... Les accolades {} servent à définir le nombre de caractères que tu souhaites, un peu comme *, + et ? mais en plus précis : Code :
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
||||||
|
|
00
|
|
|
#16 | ||||
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Merci infiniment pour ta réponse très complète Kirkis.
Cela étant je dois vraiment être con comme un balais, parce que ça ne fonctionne toujours pas. Je viens d'essayer cela : Code :
Code :
|
||||
|
|
00
|
|
|
#17 | ||
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Tu dois effectivement être un manche (j/k) car ceci fonctionne :
Code :
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
||
|
|
00
|
|
|
#18 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Bon oui, alors je viens de réessayer :
Cela fonctionne en effet mais pas si il y a deux mots. |
|
|
00
|
|
|
#19 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Bah non : l'espace n'est pas une lettre entre a et z...
[Edit] Je crois que je viens de piger les classes POSIX... Code :
/^[[:alpha:]]+$/ semble équivaloir /^[a-z]+$/i
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#20 |
|
Membre éclairé
![]() Inscription : juillet 2005 Messages : 1 221 ![]() |
Ok !
Alors je viens de reprendre ta regexp et j'ai rajouté i à la fin, comme suit: Le i permet donc d'ignorer la casse (je te l'explique pour que tu saches le faire seul une autre fois Kirkis La vache 6 heures pour ça quand même..... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com