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

exp reg pour du texte utf8

3 views
Skip to first unread message

Olivier Masson

unread,
Dec 7, 2009, 10:10:51 AM12/7/09
to
Bonjour,

Est-il possible de cr�er un expression r�guli�re simple pour contr�ler
qu'un champs comporte des lettres... toutes les lettres, y compris
cyrillique, accentu�es, etc. Le tout en utf8 ?

Merci.

Olivier Miakinen

unread,
Dec 7, 2009, 12:13:26 PM12/7/09
to
[diapublication et suivi vers fr.comp.lang.regexp]

Le 07/12/2009 16:10, Olivier Masson a ᅵcrit :
>
> Est-il possible de crᅵer un expression rᅵguliᅵre simple pour contrᅵler

> qu'un champs comporte des lettres... toutes les lettres, y compris

> cyrillique, accentuᅵes, etc. Le tout en utf8 ?

Avec PCRE : /^\pL+$/ vᅵrifie qu'une chaᅵne ne contient que des lettres
au sens Unicode (au moins une).

Malheureusement, je crois que ce n'est pas encore implᅵmentᅵ dans
JavaScript (du moins dans ECMAScript 3e ᅵdition), et je ne crois pas
qu'il existe d'alternative, hormis celle de dᅵcrire laborieusement
toutes les plages de codes qui t'intᅵressent.

Je fais suivre ᅵ tout hasard vers fr.comp.lang.regexp.

Cordialement,
--
Olivier Miakinen

SAM

unread,
Dec 8, 2009, 7:44:52 AM12/8/09
to
Le 12/7/09 4:10 PM, Olivier Masson a écrit :
> Bonjour,
>
> Est-il possible de créer un expression régulière simple pour contrôler
> qu'un champs comporte des lettres... toutes les lettres, y compris
> cyrillique, accentuées, etc. Le tout en utf8 ?
>
> Merci.

Peut-être + simple de vérifier que ça ne comporte pas les indésirables ?

champ.match(/[^+*"'<>‹≈\s\d.,:;(\){\}[\]\/\\—_-]+/); // à compléter ?

Ou bien si tout est acceptable sauf chiffres
/[^0-9]+/


Passer en utf-8 si le news-reader ne l'a pas fait tout seul.

javascript:chp='©†™®‡ß<朇Ò∂ƒfiÌπ¬µ◊ß';alert(chp.replace(/[^+*"'<>‹≈\s\d.,:;(\){\}[\]\/\\—_-]+/,'').length==0)
javascript:chp='©†™®‡ß朇Ò∂ƒfiÌπ¬µ◊ßПробуйте';alert(chp.replace(/[^+*"'<>‹≈\s\d.,:;(\){\}[\]\/\\—_-]+/,'').length==0)


--
sm

Olivier Miakinen

unread,
Dec 8, 2009, 9:17:23 AM12/8/09
to
Le 08/12/2009 13:44, SAM a écrit :
>>
>> Est-il possible de créer un expression régulière simple pour contrôler
>> qu'un champs comporte des lettres... toutes les lettres, y compris
>> cyrillique, accentuées, etc. Le tout en utf8 ?
>
> Peut-être + simple de vérifier que ça ne comporte pas les indésirables ?
> champ.match(/[^+*"'<>‹≈\s\d.,:;(\){\}[\]\/\\—_-]+/); // à compléter ?

Comme le rappelle souvent John Gallet sur fclp, le seul contrôle
sécurisé est celui qui liste les caractères autorisés plutôt que les
caractères interdits.

> Ou bien si tout est acceptable sauf chiffres
> /[^0-9]+/

Quid des chiffres en hindi, dévanâgarî, bengali, gourmoukhî, tamoul,
télougou, malayalam, etc. ?

> [...] '©†™®‡ß朇Ò∂ƒfiÌπ¬µ◊ßПробуйте' [...]

Ah, évidemment, si tu te limites aux caractères qui sont dans MacRoman
(y compris le logo Apple, mais non compris l'immense diversité des
langues du monde), c'est plus facile. ;-)

SAM

unread,
Dec 8, 2009, 5:49:30 PM12/8/09
to
Le 12/8/09 3:17 PM, Olivier Miakinen a écrit :

> Le 08/12/2009 13:44, SAM a écrit :
>>> Est-il possible de créer un expression régulière simple pour contrôler
>>> qu'un champs comporte des lettres... toutes les lettres, y compris
>>> cyrillique, accentuées, etc. Le tout en utf8 ?
>> Peut-être + simple de vérifier que ça ne comporte pas les indésirables ?
>> champ.match(/[^+*"'<>‹≈\s\d.,:;(\){\}[\]\/\\—_-]+/); // à compléter ?
>
> Comme le rappelle souvent John Gallet sur fclp, le seul contrôle
> sécurisé est celui qui liste les caractères autorisés plutôt que les
> caractères interdits.
>
>> Ou bien si tout est acceptable sauf chiffres
>> /[^0-9]+/
>
> Quid des chiffres en hindi, dévanâgarî, bengali, gourmoukhî, tamoul,
> télougou, malayalam, etc. ?

Bon .... sauf chiffres arabes
C'est mieux comme ça Sidi Olivier ?

>> [...] '©†™®‡ß朇Ò∂ƒfiÌπ¬µ◊ßПробуйте' [...]
>
> Ah, évidemment, si tu te limites aux caractères qui sont dans MacRoman
> (y compris le logo Apple, mais non compris l'immense diversité des
> langues du monde), c'est plus facile. ;-)

Koi ? Couha ? j'avions pourtant glissé qques cyrilliques, non ?

Ça n'est qu'un exemple de chaine qui répond à la non présence des
indésirables définis précédemment - et dont il était bien indiqué qu'ils
pourraient être complétés - je te laisse libre de proposer une autre
chaine en Nahuatl (n'en ai pas trouvé la table :-( )

Pour moi, la question initiale reste encore un peu vague, et ce n'est
pas ton éclairage qui va en vaincre la nébulosité ...

fclp je ne connais pas et John Gallet non plus mais il est certain
qu'une idée plus précise des lettres requises serait un point positif.
(le braille est-il admis ?)(y comprises les abréviations?)

--
sm

Olivier Masson

unread,
Dec 11, 2009, 5:56:18 AM12/11/09
to
Le 08/12/2009 13:44, SAM a écrit :

>
> Peut-être + simple de vérifier que ça ne comporte pas les indésirables ?
>
> champ.match(/[^+*"'<>‹≈\s\d.,:;(\){\}[\]\/\\—_-]+/); // à compléter ?
>
> Ou bien si tout est acceptable sauf chiffres
> /[^0-9]+/
>
>

Comme le répond Olivier, je préfère nettement un /drop all, allow any/,
ce qui permet d'éviter les "à compléter ?" parfois dangereux.
Au-delà de ça, dans un prénom par exemple, je ne veux pas toute sorte de
caractères.
Et plus généralement, j'essaie d'avoir des expressions-types pour ne pas
me poser de questions pas la suite ; je veux des lettres : je n'obtiens
que des lettres. On pourrait faire de même pour les chiffres car Olivier
soulève, encore une fois, le problèmes des chiffres non-arabes.
Ca peut paraitre disproportionné, mais c'est insupportable de voir que
TOUTES les sources js ou php que je vois, avec de jolies classes
partout, où ça se la pète "je fais de MVC", etc. ne sont pas foutues de
gérer l'internationalisation.
Alors on fait le pro à dire "oula, il faut séparer les couches, et
gnigni et gnagna" et à côté, on blinde sont code de die, de catch,
d'exceptions en tous genres qui, au final, balance une bonne variable en
dure avec un "Connexion à la base impossible". OUAIS, JE SUIS ÉNERVÉ ;)
(comme dirait l'autre, j'ai un profond mépris pour ces gens-là :D)
Enfin bon... Donc j'essaie de penser à ça pour la conception des regexp.

0 new messages