Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/02/2011, 13h15   #1
Membre régulier
 
Inscription : octobre 2006
Messages : 131
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 131
Points : 75
Points : 75
Par défaut Repérer le caractère '\' dans une RegExp

Bonjour à tous,

Voilà j'ai un petit souci concernant les expressions régulières en JS.
En effet j'ai une liste de caractères autorisés et je souhaite ajouter le caractère antislash '\'.

Voici mon bout de code :
Code :
1
2
3
4
 
e = new RegExp('^[+-/* =><.,():$%";?&\\0-9A-Za-z]*$',"g");
var toto = e.exec(object.value);
alert(toto);
Ensuite je fais un traitement selon la valeur de toto.
object.value est la valeur du champ de texte vérifié.

Alors lorsque je met dans mon champ de texte un \, il me retourne null pour l'expression régulière ! Cela ne devrait pas arriver... Une idée ?

Merci d'avance ^^

PS : Informations complémentaires - j'utilise IE6 (je sais qu'il y a mieux mais bon pas le choix).
Dark_TeToN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 14h07   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
Il y a d'autres caractères à échapper
Essaye avec :
Code :
1
2
var e = /^[+\-\/\* =><\.,():\$%";\?&\\0-9A-Za-z]*$/g;
alert(e.test('toto\\tata'))
PS : dans la chaîne à tester, il faut aussi échapper le "\" pour éviter qu'il soit interprété comme une tabulation dans l'exemple
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 16h30   #3
Membre régulier
 
Inscription : octobre 2006
Messages : 131
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 131
Points : 75
Points : 75
Merci beaucoup ^^
Dark_TeToN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2011, 17h06   #4
Membre Expert
 
Avatar de Loceka
 
Tlouye Ci
Inscription : mars 2004
Messages : 1 450
Détails du profil
Informations personnelles :
Nom : Tlouye Ci

Informations forums :
Inscription : mars 2004
Messages : 1 450
Points : 2 149
Points : 2 149
Citation:
Envoyé par Bovino Voir le message
Il y a d'autres caractères à échapper
Pas d'accord.

Il y'avait 2 choses à changer :
  1. Echapper le caractère "\" dans la chaîne de caractère ET dans la regex :
    Code :
    e = new RegExp('^[+-/* =><.,():$%";?&\\\\0-9A-Za-z]*$',"g");
  2. Mettre le symbole "-" à la fin de la classe (ou l'échapper en effet) :
    Code :
    e = new RegExp('^[+/* =><.,():$%";?&\\\\0-9A-Za-z-]*$',"g");

Tout le reste était bon.

Ceci dit, en dehors des classes (ce qui est entre crochet "[" et "]"), il est effectivement nécessaire d'échapper les caractères suivants :
Code :
., +, *, ?, \, /, (, ), [, ], {, }, ^, $
Dans les classes, les seuls caractères qui ont du "sens" sont "\" et "-" (sauf quand ce dernier est placé à la fin de la classe).

Ceci dit, en écrivant la regex sous forme de regex (comme l'a fait Bovino) et non de String, tu n'as plus besoin d'échapper le "\" dans la chaîne de caractère mais seulement dans la regex :
Code :
e = /^[/+* =><.,():$%";?&\\0-9A-Za-z-]*$/g;
Loceka est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h20.


 
 
 
 
Partenaires

Hébergement Web