Expression régulière pour nombre décimal

Résolu
rgdu86 Messages postés 275 Date d'inscription mercredi 23 mai 2007 Statut Membre Dernière intervention 7 juillet 2014 - 9 déc. 2008 à 22:52
rgdu86 Messages postés 275 Date d'inscription mercredi 23 mai 2007 Statut Membre Dernière intervention 7 juillet 2014 - 27 janv. 2009 à 22:11
Bonjour à tous,

J'ai une question toute simple pour vous mais sur laquelle je buttes depuis un moment.

J'ai sur un de mes Form un TextBox dans lequel je souhaiterais faire un contrôle de saisie.

Le contrôle de saisie consisterais à vérifier que les données entrées sont :

- soit un chiffre et un seul compris entre 0 et 3,
- soit un nombre décimal avec un chiffre et un seul, compris également entre 0 et 3, une virgule (ou un point à la rigueur) suivi d'un à trois chiffres compris entre 0 et 9.

Par exemple :

Serait autorisé "0" , "1" , "2" ou "3" ou encore "1.5" , "1,5" , "0.123" ou encore "2,24"

Ne serait pas autorisé "01" , "01.12" , "20,245" ou encore "1,1453"

Voilà en espérant avoir été assez clair.

Par avance, merci à ceux qui me répondront.

Bien cordialement.

rgdu86

2 réponses

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
10 déc. 2008 à 07:13
Hello,

Si tu as besoin de travailler avec des regex, je te conseil un petit outil gratuit, Expresso.

E gros, ça doit donner quelque chose comme ça :
^[0-3]([\.|,]\d{1,3})?$

(Expresso peut même te générer directement le code de la regex en c#, et avec le commentaire !

//  using System.Text.RegularExpressions;

/// <summary>
///  Regular expression built for C# on: mer., déc. 10, 2008, 07:07:35
///  Using Expresso Version: 3.0.2745, http://www.ultrapico.com
/// 
///  A description of the regular expression:
/// 
///  Beginning of line or string
///  Any character in this class: [0-3]
///  [1]: A numbered capture group. [[\.|,]\d{1,3}], zero or one repetitions
///      [\.|,]\d{1,3}
///          Any character in this class: [\.|,]
///          Any digit, between 1 and 3 repetitions
///  End of line or string
/// 
///
/// </summary>
public static Regex regex = new Regex(
      "^[0-3]([\\.|,]\\d{1,3})?$",
    RegexOptions.IgnoreCase
    | RegexOptions.Singleline
    | RegexOptions.CultureInvariant
    | RegexOptions.IgnorePatternWhitespace
    | RegexOptions.Compiled
    );

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)

P.S Et Oui, les commentaires sont en anglais
3