Discussion: regexp, match
Afficher un message
Vieux 24/09/2007, 10h46   #7
Olivier Miakinen
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: regexp, match

Le 24/09/2007 03:31, Mickaël Wolff a écrit :

>> Si je fait
>> var expression = /[^a-z]/i;
>> au lieu de
>> var expression = /[^a-z]/gi;
>>
>> Alors ça fonctionne.
>> Maintenant, je cherche à comprendre...

>
> 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 ?

> 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.

> /^[^a-z]$/i.exec('ddd') == null


C'est bien, c'est ce qu'on veut.

> /^[^a-z]$/i.exec('ddd ') == null
> /^[^a-z]$/i.exec('ddd d') == null


Là c'est incorrect : on voudrait cacher le bouton Submit dans de tels cas.

> /^[^a-z]$/i.exec(' ').length == 1


Ben oui, là il n'y a qu'un seul caractère.
  Réponse avec citation
 
Page generated in 0,05678 seconds with 9 queries