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 :

Interdire le backslash dans ma RegExp [RegExp]


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de two3d
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2012
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2012
    Messages : 126
    Par défaut Interdire le backslash dans ma RegExp
    Bonjour,

    j'ai un petit souci que je ne parviens pas à solutionner, j'ai créé une regex pour matcher une URL, la voilà:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      var str = "http://ww.mon-sit\e.dqsf.com"; 
      var res = str.match(/^https?:\/\/([a-z0-9-.]+)\.([a-z]+)$/)?"oui":"non";
      console.log(res);//oui
    Est ce que vous pouvez m'aider s'il vous plaît ?

  2. #2
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 494
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 494
    Par défaut
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    var res = str.match(/[^\\]/)?"oui":"non";
    ?
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  3. #3
    Membre éprouvé Avatar de two3d
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2012
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2012
    Messages : 126
    Par défaut
    Merci, ajouté à ma regex, ça donnerais quoi ?

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Ben Doksuri t'a donné la regexp qui va bien là...

  5. #5
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    En fait tu n'as rien à faire du tout, car effectivement ta pattern n'autorise pas l'antislash.

    Là où tu te fourvoie, c'est que ta chaîne de test n'en contient pas! (Ce que tu peux vérifier en l'affichant).

    Comme l'antislash est utilisé pour les séquences d'échappement dans les chaînes de caractères (par exemple \n pour le saut de ligne), pour le faire figurer dans une chaîne tu dois le doubler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var str = "http://ww.mon-sit\\e.dqsf.com";
    Car en écrivant juste var str = "http://ww.mon-sit\e.dqsf.com";, comme la séquence \e n'existe pas, l'antislash est tout bonnement ignoré.

    Un simple test pour t'en convaincre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log( "mon-sit\e" === "mon-site" ); // true
    NB: Si c'est pour aboutir à un booléen, à mon avis la méthode RegExp.prototype.test() est plus appropriée que String.prototype.match().

  6. #6
    Membre éprouvé Avatar de two3d
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2012
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2012
    Messages : 126
    Par défaut
    Trop bien, merci beaucoup, je me demandais pourquoi rajouter encore une condition alors que je ne l'autorisais pas...

    C'est le fait de tester si ma regex fonctionnait comme ça qui ma fait buguer (si envoyé via un champ, je pense que ça reconnaitra le \)... j'avais regardé à mettre deux antislash dans l'URL mais je me posais des questions.

    merci d'y avoir répondu et de solutionner mon problème!

    Merci pour RegExp.test(), plus rapide je suppose

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/08/2006, 03h36
  2. Interdire un espace dans une TextBox
    Par Ribéry dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 08/06/2006, 18h00
  3. incidence du backslashe dans une chaine
    Par rogerio dans le forum C++
    Réponses: 7
    Dernier message: 01/06/2006, 09h57
  4. fonction pour interdire un caractere dans un champ en php
    Par carmen256 dans le forum Langage
    Réponses: 2
    Dernier message: 15/03/2006, 22h41
  5. Interdire l'écriture dans un input type="file"
    Par jgfa9 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 28/11/2005, 22h14

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