IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

HTML Discussion :

Pattern : Regex avec un nombre de caractères spécifiques uniques


Sujet :

HTML

  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2018
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Pattern : Regex avec un nombre de caractères spécifiques uniques
    Bonjour, je cherche à mettre en place un pattern pour un imput dont l'objet est d'autoriser les chiffres, les lettres, un nombre de - illimité et un maximum de 2 /. C'est ce dernier élément qui me pose problème.

    Voici ce que j'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" pattern="^[a-z0-9-/{0,2}]+$">
    Merci d’avance pour votre aide

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Essaie ça. Mais il y a sûrement mieux ne serait-ce que pour forcer le fait qu'il faut au moins un caractère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="text" pattern="^[a-z0-9\-]*(\/)?[a-z0-9\-]*(\/)?[a-z0-9\-]*$" />

  3. #3
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 910
    Points : 6 703
    Points
    6 703
    Par défaut
    Une particularité de l'attribut pattern est que les ancres de début et de fin sont implicites (sauf erreur de ma part), donc out les ^ et $. Pour ce qui est de limiter les slashes à deux occurrences, tu peux finir ta pattern par (/[a-zA-Z0-9-]*){0,2} et le tour est joué:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" pattern="[a-zA-Z0-9-]*(/[a-zA-Z0-9-]*){0,2}" />
    Néanmoins ta description est quelque peu floue et laisse des questions en suspens:
    • L'entrée peut-elle être vide?
    • Les lettres majuscules sont-elles autorisées?
    • Est-ce que deux slashes ou deux tirets ou un slash et un tiret ou un tiret et un slash peuvent se suivre?
    • Est-ce que la chaîne peut commencer ou finir avec un slash ou un tiret?
    • Est-ce que la chaîne ne peut contenir aucune lettre et aucun chiffre lorsqu'elle est non-vide?


    ---

    Par rapport à ta pattern, écrire [a-z0-9-/{0,2}] n'a pas de sens car les crochets définissent une classe de caractères, c-à-d une sélection de caractères. Dans cette sélection l'ordre n'a aucune importance et les caractères qui habituellement ont un sens spécial dans une pattern, le perdent et sont vus comme des caractères "normaux". Donc écrire {0,2} dans un classe de caractères, c'est comme écrire }2,0{ ou 02,{} ou l'ordre que tu veux. Un classe de caractère, ça signifie: "un caractère, n'importe lequel, parmi ceux qu'il y a entre crochets".

    Autre chose, comme dans une classe de caractère le tiret a une signification spécial (on l'utilise pour définir des intervalles de caractères comme a-z), il est préférable de le placer en début ou en fin de classe pour éviter toute ambiguïté lorsque qu'on veut l'inclure dans la classe. (on peut aussi le mettre n'importe où et l'échapper, mais c'est moins smart.)

Discussions similaires

  1. [RegExp] RegEx avec accents, espaces et caractères de séparation
    Par General_Batton dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 14/03/2018, 18h31
  2. Réponses: 10
    Dernier message: 16/06/2010, 13h16
  3. [java.util.regex.Pattern] Regex : contrôler le nombre d'accolades
    Par jmini dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 01/12/2009, 11h33
  4. Réponses: 2
    Dernier message: 25/03/2009, 10h45
  5. Réponses: 2
    Dernier message: 16/04/2007, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo