Pb utilisation REGEX
Résolu
Mr Joé
Messages postés
94
Statut
Membre
-
Mr Joé Messages postés 94 Statut Membre -
Mr Joé Messages postés 94 Statut Membre -
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,
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,
A voir également:
- Pb utilisation REGEX
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- Family link temps d'utilisation ne fonctionne pas - Forum Contrôle parental
- La ressource demandée est en cours d'utilisation - Forum Téléphones & tablettes Android
- Manuel utilisation batigest connect pdf - Forum compta / gestion
1 réponse
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
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
Bonne journée,
Je passe ainsi le message en résolu