[php] Vérifier l'absence de chiffres

Fermé
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 - Modifié par Kopros le 28/08/2010 à 01:40
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 - 29 août 2010 à 04:43
Salut,

J'ai trop du mal avec les expressions régulières, ça fait quelques temps que je lutte avec ça...
Mon but est de vérifier l'absence de chiffres et de caractères spéciaux dans une chaîne :
j'ai ma variable $prenom et dedans je veux vérifier qu'il n'y a bien que des caractères entre a et z ou entre A et Z.
Et vu qu'il existe des prénoms compliqués (ou des noms, c'est le même problème) il faut autoriser les tirets (-) et les apostrophes (').

Quelqu'un peut m'aider ?


A voir également:

1 réponse

Salut,

pour t'aider : https://www.commentcamarche.net/contents/803-php-expressions-regulieres

Par exemple, pour n'avoir que les caractères entre a-z et A-Z avec apostrophe et tiret :

preg_match("#^[a-zA-Z'-]$#",  $prenom)
2
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 89
28 août 2010 à 02:48
Justement, c'est ce que j'avais fais, et c'est ce qui ne marche pas ^^
Voilà ma syntaxe :

if(!preg_match("#^[a-zA-Z'-]$#",  $prenom)){
	echo "le prénom n'est pas valide";
}
else echo "ok";


Avec ça, si je tapes "georges" (par exemple) ce n'est pas valide, par contre si je mets juste un tiret c'est ok, et si je mets un tiret avec des lettres le prenom n'est pas valide...
J'ai plus de cheveux tellement que je me les arrache ^^
0
En effet, un problème de quantificateur je pense. Essaye ceci:

preg_match("#^[a-zA-Z'-]+$#",  $prenom)

$prenom doit contenir au moins un caractère.

preg_match("#^[a-zA-Z'-]{1,20}$#",  $prenom)

$prenom doit être compris entre 1 et 20 cractères.
0
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 89
28 août 2010 à 19:01
Génial ton code marche bien, merci !

C'est quand j'y retouche que rien ne va plus... J'ai voulu ajouter les accents et les oe æ(j'y ai pas pensé plus tôt) et donc je fais ça :
preg_match(#^[a-zA-Z'-àâäéèêëîïôöûüÀÄÂÉÈÊÎÏÔÖÛÜoeæ]+$#", $prenom)

et ça ne fonctionne plus du tout !

Je continue à chercher.
0
Attention au tiret "-", il sert à définir un intervalle, exemple "a-z". Si tu le veux dans la liste des caractères possibles, met le à la fin de ton expression, soit :

preg_match("#^[a-zA-Z'àâäéèêëîïôöûüÀÄÂÉÈÊÎÏÔÖÛÜoeæ-]+$#", $prenom)


Sa devrait mieux marcher !
0
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 89
29 août 2010 à 04:43
Ok, nickel ça fonctionne !
Un grand merci à toi Noux pour tes explications :)
0