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 -
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,
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
- La ressource demandée est en cours d'utilisation - Forum Téléphones & tablettes Android
- Manuel utilisation batigest connect pdf - Forum compta / gestion
- Logiciel en Cours d'utilisation ? ✓ - Forum Logiciels
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