Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

[javascript] problème avec la regex search


Messages recommandés

Posté(e)

Bonjour, j'ai un problème avec une regex dans mon code javascript, c'est search.

 

Je lui demande en fait de chercher des caractères dans un textarea toute les x millisecondes, et s'il les trouve, une variable change. Mais, la recherche ne se fait que sur le premier caractère, et que pour la lettre é. Et ça, je ne veux pas.

 

Voici le bout de code qui pose problème :

 

valeur=document.getElementById('montextarea').value;
if (valeur.search(/é|è|à|ù/) != -1)
   {
     nbre=nbre+8;
   }
   if (valeur.search(/ê|â|û|î/) != -1)
   {
     nbre=nbre+7;
   }
   if (valeur.search(/ë|ä|ü|ö|ï|"/) != -1)
   {
     nbre=nbre+6;
   }

 

Savez-vous ce que je dois faire ?

 

Merci d'avance.

Posté(e)

J'ai aussi exxayé comme ceci :

 

if ((valeur.indexOf("é") != -1)||(valeur.indexOf("è") != -1)||(valeur.indexOf("à") != -1)||(valeur.indexOf("ù") != -1))
   {
     nbre=nbre+7;
   }

 

Mais c'est le même résultat.

Posté(e)

Quel est l'encoding utilisé par ton document ?

Quel est l'encoding utilisé par ceux qui vont remplir ton formulaire ? (eh oui, si tu as codé ta page avec des "é" en UTF-8 et que ton formulaire reçoit un "é" codé en ISO8859-1, y'a aucune chance pour que la recherche trouve quoi que ce soit)

 

A part ces problèmes potentiels, il me semble qu'avec une regexp si on cherche un caractère parmi plusieurs il convient d'utiliser la notation [abcdef] et non a|b|c|d|e|f ... De mémoire....

Et puis il me semble que j'utilisais maChaine.match(/[abcdef]/) au lieu de search(). Cela dit, match() retourne un booléen, donc pour les tests c'est plus intuitif....

Posté(e)

Merci de ta réponse.

 

Effectivement, cela peut venir du codage. Je n'y avais pas pensé.

Pour les a|b|c je ne sais effectivement pas d'où je sors les | !

 

Mais bon j'avais même essayé avec une regexp pour chaque caractère, et ça ne fonctionnait pas.

 

Pour que les é soient codés en é quel est le codage que je dois utiliser ?

 

 

Aussi, y-a-t'il un avantage à utiliser un codage plutôt que l'autre ?

Posté(e)
Pour que les é soient codés en é quel est le codage que je dois utiliser ?
C'est à dire ?

Les codes "é" pour remplacer des caractères spéciaux, c'est dans la norme HTML. Le seul endroit où tu peux les trouver, c'est dans la source de la page, pour remplacer un caractère "brut" histoire d'être certain que le navigateur affichera bien le bon caractère. Lorsque tu testes des champs, tu reçois des caractères uniques, codés dans la langue / l'encodage en action sur la machine qui fait tourner le navigateur.

Aussi, y-a-t'il un avantage à utiliser un codage plutôt que l'autre ?
Ces histoires d'encodage ne posent problème que lorsque l'on a affaire à une page contenant des caractères appartenant strictement à une langue autre que celle en vigueur sur le poste sur lequel on se trouve. Si les pages de codes sont différentes, l'affichage contiendra des choses bizarres. Le simple fait de préciser l'encodage peut régler ce problème, sauf si des personnes susceptibles de ne pas avoir ces encodages dans leurs fontes (russes, chinois, etc.) viennent consulter ton texte. C'est là que l'UTF-8 vient sauver la mise : cet encodage contient tous les caractères de tous les langages existants (et il reste encore plein de place pour d'autres ;-)) et c'est un standard international (ok, c'est une subdivision de l'UNICODE qui, lui, est un standard international).

A côté de cela, il n'y a pas d'encodage "meilleur" qu'un autre.

  • 4 semaines après...
Posté(e)
Pour les a|b|c je ne sais effectivement pas d'où je sors les | !
Les | sont utilisés dans de nombreux autres langages pour exprimer le "OU" (binaire ou logique). En ce qui concerne les RegExp il s'agit du caractère représentant une alternative. Si la chaine testée ne vérifie pas la première partie de l'alternative, c'est la suivante qui est prise en compte.

Exemple : ^[0-8][0-9]$|^90$

Cette RegExp vérifie toute chaine contenant un nombre à deux chiffres compris entre 00 et 90 (inclus)

Posté(e) (modifié)

Merci de ta réponse, mais en fait je ne sais toujours pas pourquoi j'ai mis "|" pour faire "ou", car en général (en php etc...) il en faut 2 "||" !

 

Je vais essayer de re-faire cette regexp alors.

 

Merci

Modifié par alex.hitman

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...