REGEX

Résolu
pepifou Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   -  
pepifou Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   922
 
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 6728 Date d'inscription   Statut Contributeur Dernière intervention   922 > gigaga Messages postés 2347 Date d'inscription   Statut Membre Dernière intervention  
 
exact !
plus un !
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922 > 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 6728 Date d'inscription   Statut Contributeur Dernière intervention  
 
Pas faux! On s'excite tout seul à la moindre l'ER a faire ;)
0
pepifou Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   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 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
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 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
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 6728 Date d'inscription   Statut Contributeur Dernière intervention   922 > 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 6728 Date d'inscription   Statut Contributeur Dernière intervention  
 
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   Statut Membre Dernière intervention   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