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 :

expression régulière créée dynamiquement


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut expression régulière créée dynamiquement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <script>var s='Placenta antérieur BI. - Distance col :   le 01/01/2010'
    		var s1='Placenta antérieur BI.'
    		var s2='Placenta antérieur BI. - Distance col : 12  le 01/01/2010'
    		var s3='Placenta antérieur BI. - Distance col : 12  le'
    		var rexExp='^Placenta antérieur BI\.$|^Placenta antérieur BI\. - Distance col : (.*)  le [0-3]{1}[0-9]{1}/[0-1]{1}[0-9]{1}/[0-9]{4}$'
     
    		var ref=new RegExp(rexExp,'g');
    		if (ref.test(s))
    		{
    			alert('s');
    		}
    		if (ref.test(s1))
    		{
    			alert('s1');
    		}
    		if (ref.test(s2))
    		{
    			alert('s2');
    		}
    		if (ref.test(s3))
    		{
    			alert('s3');
    		}
    </script>
    bonjour, ci dessus un petit script javascript qui doit vérifier que les expressions s, s1, s2 et s3 répondent a l'expression regExp.

    Là ou j'ai un problème, c'est que je n'arrive pas a trouver la bonne expression.
    Quoique je tente, 2 des 4 string répondent a mon expression.

    la donnée importante du problème est que cette expression est auto générée dynamiquement en fonction d'un phrase de départ.
    du type:

    je ne suis [text:] le [date:] à [heure:].

    >> devrait renvoyer une expression permettant de valider:

    s0 >> je suis.
    s1 >> je suis. dispo le à
    s2 >>je suis. dispo le 12/02/2008 à
    s3 >>je suis. dispo le 12/02/2008 à 12h25
    s4 >>je suis. le 12/02/2008 à 12h25
    s5 >>je suis. le à 12h25
    s6 >>je suis. dispo le 12/02/2008 à 12h25
    s...>> etc...

    le modele est simple:
    si aucun élément entre crochet n'est rempli, la chaine est egale au début jusqu'au premier point.
    sinon elle est egale a tous les texte statique + les valeurs des élement entre crochet, si leur valeur est différent de null.

    Si une bonne ame peut me conseiller ca serait trés cool.
    Merci d'avance.

  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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    dans l'idée ça devrait ressembler à ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var rexExp=/^Placenta antérieur BI.( - Distance col : \d*  le( \d{2}/\d{2}/\d{4})?)?$/;
    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
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    Merci pour cette suggestion mais cette RE est vrai que pour s1.

  4. #4
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    1- il faut echapper les / => \/

    2- il faut réinitialiser le pointeur de la regExp après chaque test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <script>var s='Placenta antérieur BI. - Distance col :   le 01/01/2010'
    		var s1='Placenta antérieur BI.'
    		var s2='Placenta antérieur BI. - Distance col : 12  le 01/01/2010'
    		var s3='Placenta antérieur BI. - Distance col : 12  le'
    		var rexExp='^Placenta antérieur BI\.$|^Placenta antérieur BI\. - Distance col : (.*)  le [0-3]{1}[0-9]{1}/[0-1]{1}[0-9]{1}/[0-9]{4}$'
     
    		var ref=/^Placenta antérieur BI\.( - Distance col : \d*  le( \d{2}\/\d{2}\/\d{4})?)?$/;
    		if (ref.test(s))
    		{
    			alert('s');
    		}
    		ref.test('')
    		if (ref.test(s1))
    		{
    			alert('s1');
    		}
    		ref.test('')
    		if (ref.test(s2))
    		{
    			alert('s2');
    		}
    		ref.test('')
    		if (ref.test(s3))
    		{
    			alert('s3');
    		}
    </script>
    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 !

  5. #5
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut encore une question
    merci, ca focntionne bien, j'ai cependant encore une question.

    dans mon exemple, la balise [text:] vaut 12, mais dans d'autres cas celle ci pourrait être une chaine de carractères alpha numérique.

    dans ce cas, pour l'exemple suivant:
    var s3='Placenta antérieur BI. - Distance col : 12 mm le'

    [text:] vaut :12 mm

    et là, l'expression n'est plus bonne.
    en fait j'ai 3 type de champs. un champs date, 1 heure et un text quelconque.
    comment remplacer le \d* pour que l'expression évalue comme bonne cet exemple supplémentaire.

    Merci encore pour l'aide précieuse.

  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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    peux tu énumérer les format de ce text ?

    12
    12mm
    12 mm
    0.012m ???

    on peut ratisser large :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var ref=/^Placenta antérieur BI\.( - Distance col : [0-9cm ]*  le( \d{2}\/\d{2}\/\d{4})?)?$/;
    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
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var ref=/^Placenta antérieur BI\.( (- Distance col : )([\w*\s*])*(  le)( [0-3]{1}[0-9]{1}\/[0-1]{1}[0-9]{1}\/[0-9]{4})?)?$/;
    J'ai résolu mon problème.
    pour faire court, il faut que je puisse saisir n'importe quoi dans un champs input, taggué [text:].

    merci encore

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

Discussions similaires

  1. Expression régulières : conditions dynamique
    Par Katachana dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 23/05/2011, 13h17
  2. Réponses: 2
    Dernier message: 07/08/2008, 21h51
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 10h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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