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

JavaScript Discussion :

[Regex] besoin d'aide sur des motifs


Sujet :

JavaScript

  1. #1
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut [Regex] besoin d'aide sur des motifs
    Salut

    Je viens de me rendre compte que mes regex n'étaient pas "bonnes".
    Il m'en faut deux :

    1) elle doit vérifier qu'il n'y a que des caractères numériques
    J'avais fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var maReg = new RegExp("[0-9]+","");
    Mais je viens de me rendre compte que si on tapais "222aaa" elle validait la chaine alors qu'il ne faudrait pas. Je ne comprend pas trop pourquoi

    2) elle doit n'autoriser les valeurs numériques entières et décimales. Mais elle doit seulement accepter le point du pavé numérique et pas la virgule qu'il y a sous le point d'interrogation.
    Jusqu'à maintenant j'utilisais la même qu'au dessus mais ca ne suffit pas et je ne vais pas trop comment faire

    Merci pour votre aide

  2. #2
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    euh en y repensant la 1ere ne me pose plus problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var maReg = new RegExp("^[0-9]+$","");
    mais je veux bien un peu d'aide pour la seconde

  3. #3
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut Re: [Regex] besoin d'aide sur des motifs
    Citation Envoyé par Oluha
    1) elle doit vérifier qu'il n'y a que des caractères numériques
    J'avais fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var maReg = new RegExp("[0-9]+","");
    Mais je viens de me rendre compte que si on tapais "222aaa" elle validait la chaine alors qu'il ne faudrait pas. Je ne comprend pas trop pourquoi
    Tu vérifies juste qu'il existe, quelque part dans ta chaine, une sous-chaine composée d'au moins un chiffre. (donc 222aaa convient car la sous-chaine 222 matche ton expression régulière).
    Ajoute simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     var maReg = new RegExp("^[0-9]+$","");
    Et ça forcera la sous-chaine à commencer au début de la chaine (opérateur ^) et à terminer à la fin (opérateur $) donc à faire toute la chaine!!

    Citation Envoyé par Oluha
    2) elle doit n'autoriser les valeurs numériques entières et décimales. Mais elle doit seulement accepter le point du pavé numérique et pas la virgule qu'il y a sous le point d'interrogation.
    Jusqu'à maintenant j'utilisais la même qu'au dessus mais ca ne suffit pas et je ne vais pas trop comment faire
    Je dirais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /^[\d]+(\.[\d]+)?$/
    soit une chaine composée de chiffres (\d=0-9) suivi eventuellement d'un . et d'une chaine composée de chiffres.

    Bonne chance

    Edit : un peu lent, mais mon post était long

  4. #4
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    merci !
    Donc en gros le ? permet de dire que c'est un morceau facultatif si j'ai bien compris.
    Je teste ça tout de suite

  5. #5
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    bouah ca a pas l'air de marcher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var maReg3 = new RegExp("/^[\d]+(\.[\d]+)?$/","");
    if (paye.search(maReg3) == -1) {
    	erreur = erreur + "--> the amount paid must be numeric\n";
    }
    J'ai l'alert quand le montant vaut 39.95 ou 39

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    et si tu tentes un parseFloat dans un try catch ?
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  7. #7
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    euh je peux essayer, faut que je trouve comment marche le try catch lol

    sinon je viens de tester ça mais ca ne fonctionne pas non plus, je capte pas pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var maReg3 = new RegExp("(^[0-9]+$)|(^[0-9]+\.[0-9]+$)","");

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    euh non meme, utilise isNaN :
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  9. #9
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    oki, je vais tester ça quand j'aurais 2 min

  10. #10
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    ca marche super ! Il fait bien la différence entre le point et la virgule.
    Je ne connaissais pas cette fonction. D'ailleur quelqu'un aurait la liste des fonctions javascript et leurs explications ?

    Merci

  11. #11
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par Oluha
    Donc en gros le ? permet de dire que c'est un morceau facultatif si j'ai bien compris.
    C'est bien ça.

    Bon, il suffit que je tourne le dos, et paf on critique mes solutions

    Alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alert("39.95".search(/^[\d]+(\.[\d]+)?$/));
    Ca renvoie 0 chez moi (IE et FFx), donc tu devais avoir une erreur ailleurs...

    PS: tant que ta solution marche....

  12. #12
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Citation Envoyé par Oluha
    ca marche super ! Il fait bien la différence entre le point et la virgule.
    Je ne connaissais pas cette fonction. D'ailleur quelqu'un aurait la liste des fonctions javascript et leurs explications ?

    Merci
    ben regardes en tete du forum, il me semble qu y a les references javascript
    isNaN est une fonction de base de js ca veut dire is Not A Number
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  13. #13
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    Citation Envoyé par denisC
    Alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alert("39.95".search(/^[\d]+(\.[\d]+)?$/));
    Ca renvoie 0 chez moi (IE et FFx), donc tu devais avoir une erreur ailleurs...
    Euh 0 c'est pas false ?

  14. #14
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par Oluha
    Euh 0 c'est pas false ?
    Euh, ben non, 0 c'est que le pattern commence au premier caractère de la chaine (ce qui est bien le but du jeu).

    false c'est -1 (le pattern n'est pas trouvé).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'aide sur des images
    Par Kro86 dans le forum Traitement d'images
    Réponses: 11
    Dernier message: 13/06/2008, 11h11
  2. Réponses: 3
    Dernier message: 09/04/2008, 14h24
  3. Besoin d'aide sur des requetes
    Par lamorkytu dans le forum Langage SQL
    Réponses: 5
    Dernier message: 25/01/2008, 05h31
  4. besoin d'aide sur des warnings
    Par salseropom dans le forum C
    Réponses: 12
    Dernier message: 07/11/2007, 10h01
  5. Achat pc desktop, besoin d'aide sur le choix des composants
    Par Matalobos dans le forum Ordinateurs
    Réponses: 29
    Dernier message: 25/08/2007, 23h16

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