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 :

Valider url base de données


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Valider url base de données
    Bonjour,

    Je veux savoir comment je peux modifier l'expression régulière ci-dessous pour valider une url base de donnée de cette forme: jdbc:mysql://host:port/database ou jdbc:mysql://host/database

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var regexp = new RegExp("^(jdbc:mysql)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$");
    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 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 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    sans plus de détails ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^(jdbc:mysql)://([a-zA-Z0-9.:-]+/?)*

  3. #3
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonjour.

    Que voulez-vous faire au juste ?... ("Un problème bien exposé c'est la moitié du travail !")

    Cdlt

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Merci pour vos réponses.

    Le code ci-dessous m'affiche: Not a valid Database URL
    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
     
    function validateDatabaseUrl() {
       // var regexp = new RegExp("^(jdbc:mysql)://([a-zA-Z0-9.:-]+/?)*");
        var regexp = new RegExp("^(jdbc:postgresql)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$");
        var url = "jdbc:mysql://128.123.44.14:8080/database_name";
        var error = "";
     
        if (!regexp.test(url)) {
            error = "Not a valid Database URL";
        } else {
            error = "Valid Database URL";
        }
        return error;
    }
    var x = validateDatabaseUrl();
    alert(x);
    Si l'expression régulière est bien formulé et matche les deux formats jdbc:mysql://host:port/database ou jdbc:mysql://host/database, normalement il doit afficher Valid Database URL
    J'ai besoin de corriger mon expression pour prendre en compte les deux formats ci-dessus.

  5. #5
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Il y a un problème avec les backslashes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var regexp = new RegExp("^(jdbc:postgresql)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$");
    C'est un problème classique : la regexp est déclarée indirectement, avec une chaîne. Lors de l'analyse de la chaîne, les séquences échappées sont remplacées, même celles qui n'ont pas besoin d'être échappées. Par exemple "\:" devient ":".

    Quand il n'y a pas de partie dynamique dans le motif, je conseille fortement d'utiliser la forme littérale var regexp = /motif/flags;.

    Dans l'exemple 128.123.44.14, la regexp ne valide pas à cause de ce passage : \.[a-zA-Z]{2,3} qui n'autorise pas de chiffres après le dernier point. D'ailleurs, aujourd'hui les tld peuvent contenir plus de 3 caractères, par exemple .museum (d'autres exemples) (à toi de juger si le cas peut se présenter dans ton application).

    Pour simplifier le motif, on a le raccourci \w qui correspond à la classe [a-zA-Z0-9_]. On peut donc remplacer [a-zA-Z0-9\-\.]+ par [\w.-]+ (je pense que l'ajout du dash (_) ne fait pas de mal). Note que le point n'a pas besoin d'être échappé dans une classe, ni le tiret quand il est au bord. En fait, il y a pas mal d'échappements qu'on peut enlever puisque les deux seules choses qu'un doit obligatoirement échapper dans une classe, c'est les crochets ([, ]) et le backslash lui-même.

    Le numéro de port est forcément un nombre, donc la partie correspondante devrait être (:\d+)?.

    En tirant parti du fait que les parenthèses capturent par défaut, tu peux utiliser exec pour isoler les différents éléments de l'URI. J'ai repris ton motif et l'ai simplifié, essaye ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var regexp = /^jdbc:(postgresql|mysql):\/\/([\w.-]+\.\w+)(:\d+)?\/([-\w.?,'/\\+&%$#=~]+)$/;
    //                  (       1        )     (      2     )( 3  )   (         4          )
    // 1: moteur
    // 2: nom d'hôte
    // 3: port
    // 4: nom de la base
     
    console.log(regexp.exec("jdbc:mysql://128.123.44.14:8080/database_name"));

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Hum !... Essayez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var regexp = new RegExp("^(jdbc:mysql://)([0-9]{1,3}\.){3}[0-9]{1,3}(:8080)?/[a-z]+$") ;
    Le port 8080, c'est du dur ?... Sinon vous faites (:\d+)? comme Watilin le recommande.

    Idem pour le database_name, c'est quoi les contraintes ?... J'ai mis une chaine de caractères minuscules (à voir).

    P.S : Attention j'ai pas eu le temps de tester ! (laisse aussi passer des IP syntaxiquement correctes mais erronées...)

  7. #7
    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 665
    Points
    66 665
    Billets dans le blog
    1

  8. #8
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    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
    <html>
    <head>
    <script type="text/javascript">
         function validateDatabaseUrl()
              {
         var url = "jdbc:mysql://128.123.44.14:8080/database_name" ;
     
         var regex = new RegExp("^(jdbc:mysql://)([0-9]{1,3}\.){3}[0-9]{1,3}(:8080)?/[a-z_]+$") ;
     
         if ( ! regex.test(url) )
              alert(url + " isn't a valid Database URL") ;
         else
              alert(url + " is a valid Database URL") ;
              }
    </script>
    </head>
    <body onload="validateDatabaseUrl()">
    </body>
    </html>
    P.S : J'ai rajouté le "_" dans la règle pour database_name.

Discussions similaires

  1. Réponses: 7
    Dernier message: 10/03/2012, 17h45
  2. [DW 8 & antérieurs] Integrer videoflash avec url base de données
    Par edeilwess dans le forum Dreamweaver
    Réponses: 5
    Dernier message: 16/01/2009, 17h46
  3. liste de validation et bases de données
    Par mega zen2 dans le forum Excel
    Réponses: 19
    Dernier message: 15/12/2007, 16h00
  4. VB6 Connection à une base de données dont la source est une adresse url
    Par yangoal25 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/11/2006, 18h47
  5. Réponses: 4
    Dernier message: 18/01/2006, 21h30

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