Le 04/06/2008 17:42, Une Bévue a écrit :
Olivier Miakinen <om+news@miakinen.net> wrote:
Probablement parce que, « + » n'étant pas un caractère spécial pour les
chaînes de caractères, « \+ » est équivalent à « + », et ta chaîne est
donc équivalente à " AppleWebKit/[^ ]+\+ ".
Coquille de ma part, due à la précipitation. Il fallait bien sûr lire
qu'elle est équivalente à " AppleWebKit/[^ ]++ ", mais tout le monde l'a
compris.
Essaye avec : " AppleWebKit/[^ ]+\\+ "
ouais ça roule comme ça !
et comment tu expliquerais que la chaîne :
" AppleWebKit/[^ ]+\+ " entrée dans un input text sur le site cité +
haut ne donne pas d'erreur ? ET fonctionne très bien.
Tout simplement parce que le \ est alors lu pour lui-même, et pas
comme caractère d'échappement de la syntaxe JavaScript des chaînes de
caractères. D'ailleurs tu l'écrivais toi-même :
«
je vais alors sur le site :
<
http://www.regular-expressions.info/javascriptexample.html>
où j'entre :
Regexp: " AppleWebKit/[^ ]+\+ " // sans les ""
»
Tu as bien écrit : « sans les "" ».
perso je suppute, comme ton conseil semble le confirmer, qu'il y a, à la
lecture de cet input par js un escaping fait derrière mon dos et que je
ne vois pas quand je fais un alert sur la valeur retournée par cet input
text ?
Ce n'est fait derrière ton dos que si tu ne connais pas la syntaxe des
chaînes de caractères en JavaScript. En dehors de \' \" \\ \b \f \n \r
\t et \v, toute séquence composée d'un \ et d'un autre caractère est
équivalente au caractère tout seul. Donc "\+" est équivalent à "+".
m'enfin c'est sournois, en tout cas le site où l'on peux tester une
RegExp est à prendre avec des pincettes, compte-tenu de cette
expérience...
Mais non, au contraire ! Dans ta RegExp tu veux un \ suivi d'un +, et
sur le site tu saisis un \ suivi d'un +. C'est quand tu veux utiliser
la syntaxe des « String Literals » en JavaScript que tu es obligé
d'échapper le caractère \ en écrivant \\.