REGEX

Résolu
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.
Configuration: Windows Vista
Firefox 3.0.6

6 réponses

  1. Contributeur
    je veux pourvoir mettre des lettres minuscules ET majuscules.
    donc on peut directement passer à :
    ^[ [:alnum:] ]+_{1}[ [:alnum:] ]+$/i

    sans les espaces…
    1
    1. Cela dit {1} ne sert à rien

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

      =
      ^[ [:alnum:] ]+_[ [:alnum:] ]+$/i
      0
    2. Contributeur
      @gigagaexact !
      plus un !
      0
    3. Contributeur
      @gigagaon est des bêtes, il nous manque qu'un testeur en fait !
      -:oD
      0
    4. @DalidaPas faux! On s'excite tout seul à la moindre l'ER a faire ;)
      0
    5. @gigagaMerci Dalila et Gigaga pour votre réponse rapide et votre REGEX fonctionnelle, elle marche niquel !
      Bonne soirée à vous et encore merci !
      0
  2. Merci de vos réponses, je vais tester tout ça. Pour rappel je veux pourvoir mettre des lettres minuscules ET majuscules.
    0
    1. if (preg_match("/^[A-Z0-9]+_{1}[A-Z0-9]+$/i", $texte))


      doit donc être OK ;)
      0
  3. Contributeur
    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
    1. Ah oui, la virgule... J'avais meme pas vu ;)

      Je dirai donc :

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


      Tu confirmes? ;)
      0
    2. Contributeur
      @gigagaoui 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
    3. @DalidaJe 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
  4. 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
    1. if (preg_match("/[a-z0-9]+[a-z0-9_]*[a-z0-9]+/i", $texte) && substr_count($texte, "_")<=1)
      0
      1. Contributeur
        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