Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/05/2010, à 19:02

funkalee

[Résolu]Coup de pouce sur expression régulière

Bonjour/Bonsoir
Je programme un validateur de saisie j'ai besoin d'une expression régulière, qui ne retiens que les saisies comprenant les caractères a-z A-Z 0-9 _ - . et je dois avoir un truc du genre <![CDATA[a-zA-Z0-9&&[.-_]]]> ou ça <![CDATA[\w\-\.]]> je m'y connais pas trop en regex une aide sera la bienvenu
Merci .

Dernière modification par funkalee (Le 16/05/2010, à 19:49)

Hors ligne

#2 Le 15/05/2010, à 20:17

G4L

Re : [Résolu]Coup de pouce sur expression régulière

Bonjour, je ne comprend pas vraiement la regex que tu as citer, mais si tu ne veux que les caractère suivant a-z A-Z 0-9 _ - ., Voici la regex :

#^[a-zA-Z0-9_.-]{0,5}$#

A mon avie, ce n'est pas plus simple que ça, tu peux remplacer {0,5} par les nombre que tu veux, selon la longueur de ta chaîne de caractère et le minimum de caractère à saisir.

Exemple pour de 1 à 10 caractère : {1,10}
De 4 à 20 caractère : {4,20}

Dernière modification par G4L (Le 15/05/2010, à 20:18)


Windows, ça ne fonctionne correctement que dans une fenêtre.

Hors ligne

#3 Le 15/05/2010, à 20:53

Link31

Re : [Résolu]Coup de pouce sur expression régulière

Je dirais :
<!\[CDATA[a-zA-Z0-9_.-]*\]\]>

Mais les caractères à échapper dépendent du logiciel avec lequel tu utilises cette regexp... Celle-ci devrait cependant passer à peu près partout.

Hors ligne

#4 Le 15/05/2010, à 21:23

funkalee

Re : [Résolu]Coup de pouce sur expression régulière

c'est un validateur struts2

  <field name="user.login">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message key="requiredfield"/>
        </field-validator>
        <field-validator type="stringlength">
            <param name="minLength">1</param>
            <param name="maxLength">64</param>
            <message key="allowedfieldsize"/>
        </field-validator>
        <field-validator type="regex">
        <param name="expression"><![CDATA[^[a-zA-Z0-9_\.\-]$]]></param>
        <message key="allowedcharacters"/>
        </field-validator>
    </field>

voici mon validateur ca sera plus simple avec tout le code, je ne met pas la taille dans ma regex pour lever cette exception avec un message d'erreur particulier.
J'ai testé ca, ca passe pas trop, j'ai toujours le message d'erreur sur les caractères autorisés.
Je crois je vais faire une méthode qui test le contenue de la saisie avec des plages de valeurs unicode, pasque ca me saoule cette histoire.
@G4L & Link31 Merci de vos interventions

Dernière modification par funkalee (Le 15/05/2010, à 22:43)

Hors ligne

#5 Le 16/05/2010, à 17:10

JoelS

Re : [Résolu]Coup de pouce sur expression régulière

funkalee a écrit :

c'est un validateur struts2

 ...
        <field-validator type="regex">
        <param name="expression"><![CDATA[^[a-zA-Z0-9_\.\-]$]]></param>
        <message key="allowedcharacters"/>
        </field-validator>
 ...

Je ne connais pas Strut, mais avec ça, je suis à peu près sûr que ton expression régulière n'autorise que des saisies d'un seul caractère.

Hors ligne

#6 Le 16/05/2010, à 17:19

funkalee

Re : [Résolu]Coup de pouce sur expression régulière

Je suis pour l'utilisation de regex, a la place de rajout de code, encore faut il savoir la faire, perso je sèche dessus, donc si tu as une idée d'une regex qui autorise la saisie d'une chaine de caractères ne contenant que des caractères dans les intervalles [a-z] ou [A-Z] ou [0-9] ou {'.','_','-'}. Je prendrai avec plaisir,  ca sera un plus mais pas pénalisant, j'ai comblé avec ca dans ma classe d'action.

    public static boolean isValidLogin(String login) {
        for (int i = 0; i < login.length(); i++) {
            if (!((login.charAt(i) >= 'a'
                    && login.charAt(i) <= 'z')
                    || (login.charAt(i) >= 'A'
                    && login.charAt(i) <= 'Z')
                    || (login.charAt(i) >= '0'
                    && login.charAt(i) <= '9')
                    || login.charAt(i) == '.'
                    || login.charAt(i) == '-'
                    || login.charAt(i) == '_')) {
                return false;
            }
        }
        return true;
    }

Dernière modification par funkalee (Le 16/05/2010, à 17:34)

Hors ligne

#7 Le 16/05/2010, à 19:30

Link31

Re : [Résolu]Coup de pouce sur expression régulière

Si c'est du XML, j'essaierais ça :
<![CDATA[^[a-zA-Z0-9_.-]*$]]>

Hors ligne

#8 Le 16/05/2010, à 19:48

funkalee

Re : [Résolu]Coup de pouce sur expression régulière

J'ai trouvé une solution donc j'ai zappé, les regex c'était plus une prise de tête qu'autre chose.
@Link31 Merci de ton intervention

Hors ligne