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 :

Une syntaxe erronée [RegExp]


Sujet :

JavaScript

  1. #1
    Invité
    Invité(e)
    Par défaut Une syntaxe erronée
    Bonjour,
    J’obtient une erreur avec mes tout premiers teste de regex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <script type="text/javascript">
     valeur="aghj !! <br />";
     valeur=valeur.replace(new RegExp("[^(a-zA-Z0-9_\.\-)]", "g"), '');
     document.getElementById('Lez').innerHTML=''+valeur;
    </script>
    <div id='Lez'></div>
    Je veux en effet ne laisser que des alphanum, ainsi que . - et _
    message "plage incorrecte dans le jeu des caractères"

    Merci d'avance
    Christele

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    le - doit être mis en fin de classe
    les caractères dans une classe n'ont pas besoin d'être échappés sauf \]
    les parenthèses ?? tu veux les exclure ou c'était juste pour grouper ?

    sans parenthèses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     valeur=valeur.replace(/[^a-zA-Z0-9_.-]/g, '');
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     valeur=valeur.replace(/[^a-zA-Z0-9_.()-]/g, '');
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour l'Ami,
    Fidèle a ta réputation c'est simple clair et efficace,
    en prime tu me donnes le choix.... mille mercis a toi
    ,et c'est noté précieusement dans mes trucs et astuces

    À bientôt
    Christele

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Il faut aussi insister sur le fait qu'en règle générale, mais plus encore pour les expressions régulières, il est recommandé d'utiliser des littéraux plutôt que des constructeurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var literalReg = /regexp/;
    var constructorReg = new RegExp('regexp');
    Une des raisons principales est que dans un littéral, il n'est pas besoin d'échapper les caractères d'échappement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var reg1 = /\d+/;
    var reg2 = new RegExp('\\d+');
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour Bovino,
    Justement je revenais tout triste, car maintenant il me dit
    document.getElementById('....') a la valeur nulle ou n'est pas un objet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <script type="text/javascript"> 
     valeur="aghj !! <br />";
    valeur=valeur.replace(/[^a-zA-Z0-9_.-]/g, '');
    document.getElementById('Lez').innerHTML=''+valeur;
    </script>
    <div id=Lez > </div>
    Par contre ta remarque m'intéresse, mais je ne comprends pas comment
    dans mon exemple précis tu l'aurais écrit ?
    Crois-moi ce n'est pas par flemme ,et c'est rare que je bute ainsi !
    A++
    Christele

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    le script est lancé avant que l'objet ne soit instancié ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    le script est lancé avant que l'objet ne soit instancié ...
    Oui, je l'admets, mais dans mes AJAX, toute ma page est située après
    le JavaScript et ça marche ... même je dirais que c'est plus facile a lire.
    Voulant garder cette disposition, je ne lancerais le script que lorsque Windows onload !

    Je reviens après test.
    A++
    Christele

    RE EDITE: super avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <script type="text/javascript">
    function f1()
    {
    valeur="aghj !! <br />";
    valeur=valeur.replace(/[^a-zA-Z0-9_.-]/g, '');
    document.getElementById('Lez').innerHTML=''+valeur;
    }
    window.onload = f1;
    </script>
    <div id=Lez > </div>
    C'est top !!
    Encore merci, et je remets résolu ...
    Christele

  8. #8
    Invité
    Invité(e)
    Par défaut
    Re bonjour,
    Merci encore, j'ais bien compris et mis ma question résolue.
    Il me reste a vous demander si ma solution finale est parfaite,
    a savoir:
    Accepter alpha numérique
    Accepter les lettres (principales accentuées)
    Accepter @ et € Et bien sur l'espace " "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function f1()
    {
    valeur="aghj !! é çà € <br />";
    valeur=valeur.replace(/[^a-zA-Z0-9ÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôùû€@ _.-]/g, '');
    document.getElementById('Lez').innerHTML=''+valeur;
    }
    window.onload = f1;
    Merci encore
    Christele

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    pourquoi + '' ???

    et accessoirement il manque une paire de caractères accentués
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Peut-être au cas où "aghj !! é çà € <br />" ne soit pas une chaine !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Oui, c'est une habitude un peut "réflexe" je l'avoue
    au départ pour me préserver de fausses valeurs comme false true etc.
    par exemple dans mes contrôles de POST j'utilise toujours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $lieu = (isset($_POST['lieu'])) ? $_POST['lieu'] : '';
    //====== ainsi je suis certaine de ceci
    if ($lieu=="") echo "existe mais vide";
    //====== bien sur dans l'autre cas
    $lieu = (isset($_POST['lieu'])) ? $_POST['lieu'] : 0;
    Merci pour votre relecture c'était sympa !
    Christele

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

Discussions similaires

  1. Mise en forme dans un RTF via une syntaxe personnelle
    Par sqwalichou dans le forum Autres langages
    Réponses: 2
    Dernier message: 24/02/2006, 22h19
  2. Comment détecté automatiquement Une base erronée.
    Par ada_b dans le forum Débuter
    Réponses: 4
    Dernier message: 13/01/2005, 07h56
  3. renvoie une valeur erronée
    Par m@thieu dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/12/2004, 17h09
  4. [langage] comprendre une syntaxe particulière
    Par mat21 dans le forum Langage
    Réponses: 4
    Dernier message: 08/12/2004, 18h12
  5. [RICHEDIT] -> Coloriser une syntaxe ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 6
    Dernier message: 18/01/2004, 12h57

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