REGEX

Résolu/Fermé
pepifou Messages postés 55 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 18 mars 2012 - 6 mars 2009 à 20:08
pepifou Messages postés 55 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 18 mars 2012 - 6 mars 2009 à 21:53
Bonjour,
Je voudrais créer une Regex qui exclut tout les caractères spéciaux sauf le "_", qui autorise le lettres en majuscules et les chiffres. De plus, le "_" n'a pas le droit d'être au début ni à la fin et a le droit d'être utilisé qu'une seule fois. Par exemple, elle doit reconnaitre : "aZ_78abc" mais pas "_Abc1" ni "3_ab_c".

Je veux l'insérer dans cette structure :


if (preg_match("# MA REGEX #", $texte))
{

echo 'Correct';

}

else
{

echo 'Erreur';

}



Bonne soirée.

6 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
6 mars 2009 à 20:29
je veux pourvoir mettre des lettres minuscules ET majuscules.
donc on peut directement passer à :
^[ [:alnum:] ]+_{1}[ [:alnum:] ]+$/i

sans les espaces…
1
gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
6 mars 2009 à 20:31
Cela dit {1} ne sert à rien

^[ [:alnum:] ]+_{1}[ [:alnum:] ]+$/i 

=
^[ [:alnum:] ]+_[ [:alnum:] ]+$/i
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922 > gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014
6 mars 2009 à 20:33
exact !
plus un !
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922 > gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014
6 mars 2009 à 20:35
on est des bêtes, il nous manque qu'un testeur en fait !
-:oD
0
gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301 > Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
6 mars 2009 à 20:36
Pas faux! On s'excite tout seul à la moindre l'ER a faire ;)
0
pepifou Messages postés 55 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 18 mars 2012 4 > gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014
6 mars 2009 à 21:22
Merci Dalila et Gigaga pour votre réponse rapide et votre REGEX fonctionnelle, elle marche niquel !
Bonne soirée à vous et encore merci !
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
6 mars 2009 à 20:15
salut,

allez, je tente, j'ai jamais fait autant de Regex qu'en répondant sur CCM !
-:oD
'`[A-Z,0-9]+_{1}[A-Z,0-9]+`'

LETTRES ou chiffres une fois ou plus, soulignement une fois, LETTRES ou chiffres une fois ou plus.
0
gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
6 mars 2009 à 20:16
if (preg_match("/[a-z0-9]+[a-z0-9_]*[a-z0-9]+/i", $texte) && substr_count($texte, "_")<=1)
0
gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
6 mars 2009 à 20:18
L'ER de Dalida est mieux que la mienne, car moi je fais 2 controles (je voyais pas comment m'assurer que _ n'est qu'une seule fois).
Par contre, l'ER faut l'encapsuler par "//i" pour que ce soit insensible à la casse.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
6 mars 2009 à 20:20
re,

L'ER de Dalida est mieux que la mienne
mais elle contient une erreur que j'ai vu grâce à toi !
'`[A-Z0-9]+_{1}[A-Z0-9]+`'

à trois on va finir par y arriver, c'est sûr !
-:oD
0
gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
6 mars 2009 à 20:22
Ah oui, la virgule... J'avais meme pas vu ;)

Je dirai donc :

'/^[A-Z0-9]+_{1}[A-Z0-9]+$/i'


Tu confirmes? ;)
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922 > gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014
6 mars 2009 à 20:23
oui mais sans le "i" puisqu'il ne veut que des majuscules !
-;o)

<edit>
Je voudrais créer une Regex qui exclut tout les caractères spéciaux sauf le "_", qui autorise le lettres en majuscules et les chiffres.
on finit par parler tout seuls !
</edit>
0
gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301 > Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
6 mars 2009 à 20:25
Je suis pas sûr :

Par exemple, elle doit reconnaitre : "aZ_78abc" mais pas "_Abc1" ni "3_ab_c".

Il a dit qu'elle doit reconnaitre les majscules mais je pense qu'il a dit ça dans le sens "en plus des minuscules".
Sinon j'ai ajouté les caractères de début et de fin de chaine et enlevé tes `
0
pepifou Messages postés 55 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 18 mars 2012 4
6 mars 2009 à 20:26
Merci de vos réponses, je vais tester tout ça. Pour rappel je veux pourvoir mettre des lettres minuscules ET majuscules.
0
gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
6 mars 2009 à 20:27
if (preg_match("/^[A-Z0-9]+_{1}[A-Z0-9]+$/i", $texte))


doit donc être OK ;)
0