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 07/07/2011, 19h21   #1
Membre régulier
 
Inscription : octobre 2007
Messages : 199
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 199
Points : 77
Points : 77
Par défaut expression régulière : invalid range in character

Bonsoir,
L'expression régulière suivante génère
Citation:
invalid range in character class
.
Voici la chose :
Code :
this.reg = /^[- A-Za-z éèçàùôî\\']+$/;
.
L'éditeur de code javascript est connu : Zend Studio for eclipse 6.1.0.
Je fatique un peu...
Merci !
JLC83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 19h28   #2
Expert Confirmé Sénior
 
Avatar de Auteur
 
Inscription : avril 2004
Messages : 4 794
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 4 794
Points : 5 118
Points : 5 118
bonjour,

je crois que tu dois échapper le signe - qui se trouve au début de ta regexp. Par ailleurs tu as mis deux fois l'espace dans cette expression.

Code :
this.reg = /^[\\- A-Za-zéèçàùôî\\']+$/;
Auteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 11h29   #3
Membre régulier
 
Inscription : octobre 2007
Messages : 199
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 199
Points : 77
Points : 77
Merci
D'autant que j'ai découvert - un peu tard - qu'il est possible de décrire un caractère en hexadécimal.
Cela me fera gagner du temps.
Encore MERCI
JLC83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 13h51   #4
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
Citation:
Envoyé par Auteur Voir le message
bonjour,

je crois que tu dois échapper le signe - qui se trouve au début de ta regexp. Par ailleurs tu as mis deux fois l'espace dans cette expression.

Code :
this.reg = /^[\\- A-Za-zéèçàùôî\\']+$/;


Si tu mets 2 "\", le premier échappe le second, et le "-" suivant n'est donc, lui, pas échappé du tout... ou c'est moi qui me plante ? (idem pour la quote à la fin de la regexp)

J'aurais plutot supposé que :
>>> quand on génère une regexp à partir du constructeur RegExp(String s), la chaine est d'abord interprétée au passage du paramètre et une seconde fois quand la regexp s'exécute, donc là oui on double le "\". Exemple :
Code :
this.reg = new Regexp("^[\\- A-Za-zéèçàùôî\\']+$");
>>> par contre, avec un littéral, pas besoin d'anticiper la première interprétation car elle n'aura pas lieu ^^

(edit : je suis en train de tester et il me semble que ce que je raconte est faux
Je n'ai pas le temps tout de suite de revérifier mais je vais refaire quelques tests plus tard, je dois faire une erreur grossière quelque part...
)
Heu... non c'est mon test qui était faux, le raisonnement est correct
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 17h11   #5
Membre régulier
 
Inscription : octobre 2007
Messages : 199
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 199
Points : 77
Points : 77
La technique consistant à référencer les caractères ' par \x27 par exemple, fonctionne parfaitement....
Merci de votre aide !
Jean-Louis
JLC83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 20h51   #6
Expert Confirmé Sénior
 
Avatar de Auteur
 
Inscription : avril 2004
Messages : 4 794
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 4 794
Points : 5 118
Points : 5 118
Citation:
Envoyé par RomainVALERI Voir le message


Si tu mets 2 "\", le premier échappe le second, et le "-" suivant n'est donc, lui, pas échappé du tout... ou c'est moi qui me plante ? (idem pour la quote à la fin de la regexp)
J'aurais écrit comme toi....

Mais je me suis basé sur la précédente discussion de JLC83
Auteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2011, 20h57   #7
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
Citation:
Envoyé par Auteur Voir le message
J'aurais écrit comme toi....

Mais je me suis basé sur la précédente discussion de JLC83
Ah oui effectivement ça me faisait une impression de déjà-vu

Mais bon il n'aurait pas été inutile de préciser, sur le forum Javascript, quand on publie un extrait hyper court et qui, de plus, est tout-à-fait valide en JS donc est implicitement présenté comme tel, que c'est en fait du "JS-généré-par-PHP". (mais non je m'énerve pas mimiiiine... j'explique...)
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2011, 10h59   #8
Membre régulier
 
Inscription : octobre 2007
Messages : 199
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 199
Points : 77
Points : 77
J'insiste, il ne s'agit pas de PHP mais de JAVASCRIPT !
Certes édité dans Zend Studio for eclipse mais dans l'éditeur javascript.
Pour l'impression de déjà vu, je reconnais que...
JLC83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2011, 11h29   #9
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
Citation:
Envoyé par JLC83 Voir le message
J'insiste, il ne s'agit pas de PHP mais de JAVASCRIPT !
Certes édité dans Zend Studio for eclipse mais dans l'éditeur javascript.
Pour l'impression de déjà vu, je reconnais que...
Ce n'est pas encore du code Javascript. C'est du code serveur qui va être interprété pour générer du code Javascript réel à la demande de la page.
Si tu exécutes la Regexp en question directement dans la console du navigateur, tu verras qu'elle n'est pas valide telle quelle. Dans la console, il faudrait exécuter
Code :
1
2
3
var reg = /^[\- A-Za-zéèçàùôî\']+$/;// je n'ai bien mis qu'un simple "\", pas deux
alert(reg.test("abcdef%xyz"));// retournera false à cause du "%"
alert(reg.test("tout-à-fait"));// retournera true
...alors qu'avec les double "\" Firebug lève une erreur en analysant la Regexp...

En dernier ressort, si tu veux en avoir le coeur net, regarde le code généré par ton moteur PHP, celui qui est envoyé au navigateur : la Regexp ne comporte qu'un seul "\" à chaque caractère échappé alors que tu en mets deux dans ton code source sur Eclipse
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2011, 12h48   #10
Expert Confirmé Sénior
 
Avatar de Auteur
 
Inscription : avril 2004
Messages : 4 794
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 4 794
Points : 5 118
Points : 5 118
Je suis d'accord avec RomainVALERI, l'expression régulière n'est pas valide côté client (javascript), il faut effectivement 1 caractère \ pour échapper les caractères.

autant utiliser un éditeur de texte simple (notepad++ par exemple) si on veut faire du javascript
Auteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2011, 16h33   #11
Membre régulier
 
Inscription : octobre 2007
Messages : 199
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 199
Points : 77
Points : 77
Effectivement
Cela ne m'avait pas même effleuré !
Aujourd’hui, j'ai encore appris quelque chose : Merci
JLC83 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 04h00.


 
 
 
 
Partenaires

Hébergement Web