Discussion: regexp, match
Afficher un message
Vieux 24/09/2007, 13h16   #8
Mickaël Wolff
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: regexp, match

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
  Réponse avec citation
 
Page generated in 0,05301 seconds with 9 queries