Partage
  • Partager sur Facebook
  • Partager sur Twitter

Autoriser "chiffres", "lettres", "." - Expressionr

    17 juillet 2019 à 19:59:26

    Bonjour,
    Quelle serait l'expression régulière si je souhaite autoriser uniquement : "chiffres", "lettres", "." ?
    <?php
    if (!preg_match("#^[a-z0-9_]+$#", $_POST['pseudo']))
            {
                echo '<p>Votre pseudo ne peut contenir que des lettre minuscule, des chiffre et "_".</p>';
            }
            else
            {
                echo '<p>Pseudo ok!</p>';
            }
    ?>
    J'ai trouvé ce code sur un autre sujet, mais quand j'ajoute le . à la place du _ ma page affiche une erreur.
    Une explication ?
    Merci par avance

    -
    Edité par nicobelo 17 juillet 2019 à 19:59:57

    • Partager sur Facebook
    • Partager sur Twitter
      17 juillet 2019 à 20:44:29

      bonjour,

      le point est un caractere spécial dans la regex, il faut le protéger avec \.  ;) 

      • Partager sur Facebook
      • Partager sur Twitter
        17 juillet 2019 à 21:28:09

        > le point est un caractere spécial dans la regex, il faut le protéger avec \.

        Sauf qu'il perd son sens de métacaractère, comme la plupart, au sein d'une classe (et d'autres le deviennent comme - ou ^ suivant leur position), il est donc strictement inutile de l'échapper s'il est bel et bien dans la classe.

        > J'ai trouvé ce code sur un autre sujet, mais quand j'ajoute le . à la place du _ ma page affiche une erreur.

        Avec #^[a-z0-9.]+$# tu as une erreur ? Quel est le sens de "erreur" ici ? Une erreur PHP ou que le code de ton if est exécuté quand tu t'attends au contraire ?

        Noter que ce dernier motif ne permet pas toute lettre mais uniquement les lettres minuscules (ASCII de surcroît).

        > J'ai trouvé ce code sur un autre sujet

        Ce n'est pas le tout de "trouver", ce serait mieux de comprendre avant tout. Tout en sachant que des bases vous sont données concernant les regexp dans le cours php/mysql d'ici.

        -
        Edité par julp 17 juillet 2019 à 21:41:05

        • Partager sur Facebook
        • Partager sur Twitter
          17 juillet 2019 à 23:41:08

          c'est inutile, mais ça ne mange pas de pain :) à défaut de connaitre par coeur la liste des caractères à échapper dedans / dehors, je proposais ça à tout hasard. Mais pour le coup, j'avoue ça fait pas avancer le problème.

          à défaut de comprendre, il est utile de tester, et il y a des tas d'outils online précis et documentés pour vérifier une regex : https://regex101.com/ 

          • Partager sur Facebook
          • Partager sur Twitter

          Autoriser "chiffres", "lettres", "." - Expressionr

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown