Olivier Miakinen a écrit :
>> C'est parce que ta regexp ne contient pas les notions de début et de
>> fin d'expression, et qu'avec le taf global, il trouvait une portion de
>> la chaine testée qui correspondait à la regexp.
>
> Ah non, je ne suis pas d'accord du tout.
>
> Soit la chaîne "ddd d d d d d d".
> /[^a-z]/i devrait donner array(" ")
> /[^a-z]/gi devrait donner array(" ", " ", " ", " ", " ", " ")
> Dans un cas comme dans l'autre, le tableau est non vide.
> Je me trompe ?
Non, nous sommes d'accord.
>> Pour être certain de tester toute la chaine, il faut indiquer que la
>> regexp contiennent les séquences de début (^) et de fin ($) de chaine :
>>
>> /^[^a-z]$/i
>
> Ben non, ça ne peut pas fonctionner. Avec ce test, tu ne peux détecter
> que les chaînes dont le *seul* caractère est autre chose qu'une lettre.
Pardon, je suis allé trop vite. Il fallait lire /^[^a-z]+$/i bien
évidemment. Merci d'avoir relevé

Mais en fait non, dans le cas
présent, ça ne va toujours pas. Parce que ça ne détecte que les chaines
composées de caractères interdits.
/^([^a-z]+|[a-z]*)+$/i devrait alors être utilisé si on veut être
certain de trouver au moins un caractère rejeté... mais c'est un peu
usine à gaz.
En fait, même sans utiliser le flag global ça aurait dû marcher...
Mihamina, est-ce que sans le flag global ta regexp continue à déconner
maintenant ?
Désolé d'avoir raconté des conneries, je lis trop vite les messages
auxquels je répond. Je vais aller cueillir des orties fraiches.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org