Pb utilisation REGEX

Résolu
Mr Joé Messages postés 94 Date d'inscription   Statut Membre Dernière intervention   -  
Mr Joé Messages postés 94 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J' utilise une regex qui est la suivante mais elle ne fonctionne pas :

^[1-9][.][A-B-C-H-J-M-N-O-P-R-G-L][.][0-14][.][001-999]$

J'aimerai que : premièrement un chiffre de 1 à 9
séparé d'un point
ensuite une lettre parmi A-B-C-H-J-M-N-O-P-R-G-L
séparé d'un point
ensuite un chiffre de 0 à 14 ou une lettre de R à U
séparé d'un point
ensuite un numéro d'ordre de 001 à 999

Exemple de résultat : 2.A.6.096

Merci pour votre aide,

1 réponse

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Le point "." signifie "n'importe quel caractère". Essaie de l'échapper, en remplaçant tes [.] par \.
Ensuite, les tirets servent à matérialiser un intervalle.
Remplace [A-B-C-H-J-M-N-O-P-R-G-L] par [ABCHJMNOPRGL]
[0-14] ne fonctionnera pas non plus, parce que les expressions rationnelles agissent en termes de caractères et non pas en termes de nombres ou autres choses qui pourraient avoir un sens. Ca devient plus compliquer à coder, du coup :
[0-9]|1[0-4] (c'est à dire : un chiffre allant de 0 à 9, OU un 1 suivi d'un chiffre allant de 0 à 4.

Même problème pour [001-999], mais en plus simple.
[0-9]{3} (c'est-à-dire : 3 chiffres de 0 à 9. Par rapport à ton souhait, cela inclut la séquence 000, mais est-ce génant ?)

Ce qui donne, au final :
^[1-9]\.[ABCHJMNOPRGL]\.[0-9]|1[0-4]\.[0-9]{3}$

Voilà !
Ça donne quoi ?

Je ne garantis par le résultat à 100%, les expressions rationnelles étant une science inexacte en dehors d'un environnement bien déterminé... Comprendre : ça dépend du logiciel que tu utilises pour la faire tourner !


Xavier
0
Mr Joé Messages postés 94 Date d'inscription   Statut Membre Dernière intervention   3
 
Je te remercie pour ton aide j'ai pu modifier les erreurs,

Bonne journée,

Je passe ainsi le message en résolu
0