REGEX

Résolu
pepifou Messages postés 60 Statut Membre -  
pepifou Messages postés 60 Statut Membre -
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 7114 Statut Contributeur 923
 
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   Statut Membre Dernière intervention   301
 
Cela dit {1} ne sert à rien

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

=
^[ [:alnum:] ]+_[ [:alnum:] ]+$/i
0
Dalida Messages postés 7114 Statut Contributeur 923 > gigaga Messages postés 2347 Date d'inscription   Statut Membre Dernière intervention  
 
exact !
plus un !
0
Dalida Messages postés 7114 Statut Contributeur 923 > gigaga Messages postés 2347 Date d'inscription   Statut Membre Dernière intervention  
 
on est des bêtes, il nous manque qu'un testeur en fait !
-:oD
0
gigaga Messages postés 2347 Date d'inscription   Statut Membre Dernière intervention   301 > Dalida Messages postés 7114 Statut Contributeur
 
Pas faux! On s'excite tout seul à la moindre l'ER a faire ;)
0
pepifou Messages postés 60 Statut Membre 4 > gigaga Messages postés 2347 Date d'inscription   Statut Membre Dernière intervention  
 
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 7114 Statut Contributeur 923
 
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   Statut Membre Dernière intervention   301
 
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   Statut Membre Dernière intervention   301
 
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 7114 Statut Contributeur 923
 
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   Statut Membre Dernière intervention   301
 
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 7114 Statut Contributeur 923 > gigaga Messages postés 2347 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   301 > Dalida Messages postés 7114 Statut Contributeur
 
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 60 Statut Membre 4
 
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   Statut Membre Dernière intervention   301
 
if (preg_match("/^[A-Z0-9]+_{1}[A-Z0-9]+$/i", $texte))


doit donc être OK ;)
0