Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Supprimer les retours chariots en fin de chaîne

154 views
Skip to first unread message

Julien Arlandis

unread,
Jun 19, 2015, 6:34:34 AM6/19/15
to
Bonjour,

J'aurais besoin d'une regex (en javascript si possible) pour supprimer les
retours chariots en fin de chaîne.

Pour la gloire de Nemo :-)


--
Ce message a été posté avec Nemo : <http://news.nemoweb.net/?Jid=2921e92a8dce897e1cca...@news.nemoweb.net>

Julien Arlandis

unread,
Jun 19, 2015, 7:30:01 AM6/19/15
to
Le 19/06/2015 à 12:32, Julien Arlandis a écrit :
> Bonjour,
>
> J'aurais besoin d'une regex (en javascript si possible) pour supprimer les
> retours chariots en fin de chaîne.
>
> Pour la gloire de Nemo :-)

Peut être :

String().replace(/\n*$/g,'');

?

Olivier Miakinen

unread,
Jun 19, 2015, 11:37:41 AM6/19/15
to
Le 19/06/2015 13:28, Julien Arlandis s'est répondu :
>>
>> J'aurais besoin d'une regex (en javascript si possible) pour supprimer les
>> retours chariots en fin de chaîne.
>
> String().replace(/\n*$/g,'');

Oui pour supprimer tous les \n en fin de chaîne. Vu que tu es déjà
censé avoir viré d'éventuels \r ça doit suffire. Note que le flag
g ne sert à rien (on ne peut pas chercher à plusieurs endroits
quelque chose qui est de toute façon en fin de chaîne). Surtout,
il ne faut pas mettre le flag m (mais tu ne l'as pas mis alors
c'est parfait).

Julien Arlandis

unread,
Jun 23, 2015, 8:27:20 AM6/23/15
to
Merci pour la réponse. J'ai un autre petit soucis avec les retours
chariots, saurais tu me dire pourquoi cette regex ne fait pas son boulot
(la signature n'est pas supprimée) :

var reg = /(\n?\[signature\])([\s\S]*?)(\[\/signature\])/ig;
body.replace(reg,'');

quand le texte contient seulement un retour chariot avant la signature?

Olivier Miakinen

unread,
Jun 23, 2015, 9:40:39 AM6/23/15
to
Le 23/06/2015 14:25, Julien Arlandis a écrit :
>
> [...] saurais tu me dire pourquoi cette regex ne fait pas son boulot
> (la signature n'est pas supprimée) :
>
> var reg = /(\n?\[signature\])([\s\S]*?)(\[\/signature\])/ig;
> body.replace(reg,'');

Une remarque et une question :
1) Il y a trois paires de parenthèses inutiles.
2) Tu acceptes vraiment les balises [sIgnATUre] et [/SIGNaTurE] ?

> quand le texte contient seulement un retour chariot avant la signature?

Tu veux dire quand le texte est, par exemple,
"\r[SIGNATURE]salut c'est ma signature[/SIGNATURE]" ?

Non, ça ne me semble pas normal. Qu'il y ait ou non un ou plusieurs
retours chariot ou sauts de ligne avant la signature, cette regexp
devrait fonctionner (ne retirant un saut de ligne et un seul que
s'il y en a un juste avant).

Quel est le contenu exact de la chaîne où ça ne fonctionne pas ?

Julien Arlandis

unread,
Jun 23, 2015, 10:05:54 AM6/23/15
to
Le 23/06/2015 15:40, Olivier Miakinen a écrit :
> Le 23/06/2015 14:25, Julien Arlandis a écrit :
>>
>> [...] saurais tu me dire pourquoi cette regex ne fait pas son boulot
>> (la signature n'est pas supprimée) :
>>
>> var reg = /(\n?\[signature\])([\s\S]*?)(\[\/signature\])/ig;
>> body.replace(reg,'');
>
> Une remarque et une question :
> 1) Il y a trois paires de parenthèses inutiles.
> 2) Tu acceptes vraiment les balises [sIgnATUre] et [/SIGNaTurE] ?

Non seulement en minuscule, mais tant que les specs du DataType Articles
ne sont rédigées je ne sais pas encore ce qu'il convient de faire
vraiment...

>> quand le texte contient seulement un retour chariot avant la signature?
>
> Tu veux dire quand le texte est, par exemple,
> "\r[SIGNATURE]salut c'est ma signature[/SIGNATURE]" ?

Oui ou bien plutôt avec un '\n'

> Non, ça ne me semble pas normal. Qu'il y ait ou non un ou plusieurs
> retours chariot ou sauts de ligne avant la signature, cette regexp
> devrait fonctionner (ne retirant un saut de ligne et un seul que
> s'il y en a un juste avant).
>
> Quel est le contenu exact de la chaîne où ça ne fonctionne pas ?

"\n[signature]Ce message a été posté avec Nemo[/signature]"

Olivier Miakinen

unread,
Jun 23, 2015, 10:29:00 AM6/23/15
to
Le 23/06/2015 16:05, Julien Arlandis a écrit :
>>
>> 2) Tu acceptes vraiment les balises [sIgnATUre] et [/SIGNaTurE] ?
>
> Non seulement en minuscule, mais tant que les specs du DataType Articles
> ne sont rédigées je ne sais pas encore ce qu'il convient de faire
> vraiment...

Tu fais ce que tu veux pour les specs, mais au moins tu dois être
cohérent avec toi-même : si tu penses vouloir interdire le mélange
de casse, et n'autoriser que les minuscules, alors il ne faut pas
mettre le drapeau « ignore case ». Par ailleurs, si tu veux pouvoir
autoriser une casse différente pour la balise ouvrante mais imposer
que la casse soit la même dans les deux balises, c'est possible mais
la regexp sera différente.

>>> quand le texte contient seulement un retour chariot avant la signature?
>>
>> Tu veux dire quand le texte est, par exemple,
>> "\r[SIGNATURE]salut c'est ma signature[/SIGNATURE]" ?
>
> Oui ou bien plutôt avec un '\n'
>
>> Non, ça ne me semble pas normal. Qu'il y ait ou non un ou plusieurs
>> retours chariot ou sauts de ligne avant la signature, cette regexp
>> devrait fonctionner (ne retirant un saut de ligne et un seul que
>> s'il y en a un juste avant).
>>
>> Quel est le contenu exact de la chaîne où ça ne fonctionne pas ?
>
> "\n[signature]Ce message a été posté avec Nemo[/signature]"

Je viens d'essayer sur <http://regex.larsolavtorvik.com/> aussi bien
en mode PHP PCRE qu'en mode JavaScript, et la regexp fonctionne sur
cette chaîne. Il doit y avoir un problème ailleurs. Comment peux-tu
être certain que la chaîne en question est bien celle que tu as
écrite ici ?

Note : même chose sur <http://www.regextester.com/>.

Julien Arlandis

unread,
Jun 23, 2015, 1:16:12 PM6/23/15
to
Le 23/06/2015 à 16:29, Olivier Miakinen a écrit :


> Je viens d'essayer sur <http://regex.larsolavtorvik.com/> aussi bien
> en mode PHP PCRE qu'en mode JavaScript, et la regexp fonctionne sur
> cette chaîne. Il doit y avoir un problème ailleurs. Comment peux-tu
> être certain que la chaîne en question est bien celle que tu as
> écrite ici ?
>
> Note : même chose sur <http://www.regextester.com/>.

Oui effectivement l'erreur était ailleurs, il fallait remplacer dans le
code la condition suivante

if(body) clone.value.Body = body;

par

if(typeof body != "undefined") clone.value.Body = body;

Ce sont des effets de bord du javascript assez ennuyeux, car l'expression
(variable) est fausse dans les cas suivants :
variable = false
variable = ''
variable = undefined
variable = 0
..

Olivier Miakinen

unread,
Jun 23, 2015, 4:33:15 PM6/23/15
to
Le 23/06/2015 19:14, Julien Arlandis a écrit :
>
> [...]
>
> Ce sont des effets de bord du javascript assez ennuyeux, car l'expression
> (variable) est fausse dans les cas suivants :
> variable = false
> variable = ''
> variable = undefined
> variable = 0
> ..

Il y a le même genre de problème potentiel en PHP, qui se résoud le
plus souvent avec l'opérateur ===.

Bon, en tout cas ce n'était pas un problème de regexp.
0 new messages