[C#.NET] expressions régulières

expressions régulières [C#.NET] - C#/.NET managed - Programmation

Marsh Posté le 01-03-2011 à 09:27:55    

Bonjour à tous,
 
Je suis confronté à un problème lié à des expressions régulières et n'étant pas fréquemment utilisateur de ce genre d'expression, je m'en remet à vous.
 
Dans un premier temps, je dois vérifier que le texte saisi correspond bien à des noms de ville séparés par une virgule et un espace (", " ).
J'ai donc commencé à écrire mon expression mais celle-ci ne fonctionne pas (ou du moins pas correctement) :  
Regex zoneexp = new Regex("^((([a-zA-Z])(, )|([a-zA-Z]))*)$" );
 
Dans un deuxième temps, je recommence l'opération mais avec des code postaux seulement séparés par une virgule (ex : 65123,12345,45678).
Pour celle-ci, je n'ai que l'expression permettant de vérifier un seul code postal :  
Regex cpzoneexp = new Regex("^((0[1-9])|([1-8][0-9])|(9[0-8])|(2A)|(2B))[0-9]{3}$" );
 
Merci d'avance pour votre aide


Message édité par niko59480 le 01-03-2011 à 10:12:48
Reply

Marsh Posté le 01-03-2011 à 09:27:55   

Reply

Marsh Posté le 01-03-2011 à 11:27:14    

Si ceci "^((0[1-9])|([1-8][0-9])|(9[0-8])|(2A)|(2B))[0-9]{3}$" est la regexp pour un code postal,  
"^(((0[1-9])|([1-8][0-9])|(9[0-8])|(2A)|(2B))[0-9]{3},)*((0[1-9])|([1-8][0-9])|(9[0-8])|(2A)|(2B))[0-9]{3}$" est celle pour une suite de telles expressions séparées par une virgule.
On passe de A à (A,)*A
 
Pour les villes, il faudrait déjà définir comment est constitué un nom de ville (des accents? apostrophes? lettres accentuées? majuscules? trait d'union?...)
Quand vous aurez la regexp pour un nom de ville, une transformation A -> (A, )*A vous donnera celle de la liste séparée par une virgule plus un espace.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 01-03-2011 à 11:34:01    

merci gilou pour cette réponse!
 
pour les villes, elles peuvent contenir tous caractères "normaux" : ' <espace(s)> - <accents en tout genre> etc... mais bien sur pas de chiffres. j'en suis la :  
var zoneexp = new Regex("^(([a-zA-Z ]+)(, ))*([a-zA-Z ]+)$" );
 
je me demande donc quels caractères sont à rajouter avec un \ devant et lesquels n'en ont pas besoin...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed