2010-10-04 7 views
1

J'essaie de trouver une regex pour valider une double valeur. J'admettrai que je suis la merde à regex et devrait vraiment acheter un livre ... Quoi qu'il en soit la gamme est grande alors voici:regex pour valider les valeurs doubles

.01 à 99,99, est la gamme, avec le '00' étant facultatif, comme est le '.' et la même chose pour le «00». Ainsi, l'utilisateur pourrait taper 0,1 00,01, 0,11, 1, 1,0 1,00 et tous ces éléments seraient valides.

Merci, r.

+0

Vous faites cela en C# (.NET) regex? Si oui, vous devriez vous débarrasser de la balise 'visual-studio'; VS a sa propre saveur regex, qui est très différente de .NET. (Si quelqu'un suggère d'utiliser ': n', ils parlent VS.) –

+0

Merci Alan Je garderai cela à l'esprit. – flavour404

Répondre

7

Plutôt qu'un RegEx, pourquoi ne pas utiliser la méthode TryParse de double?

string[] sa = new string[] { "00.01", "1.00", "xx" }; 
double d; 
bool isValid; 
foreach (string s in sa) 
{ 
    isValid = double.TryParse(s, out d) && d >= 0.01d && d <= 99.99d; 
    Console.WriteLine("{0}: {1}", s, isValid.ToString()); 
} 
+0

'&& d> = 0.01m && d <= 99.99m' –

+0

Il fonctionne même avec des cultures non américaines! +1 – dtb

+1

+1 pour avoir suggéré de ne pas utiliser d'expressions régulières, bien que votre réponse soit incomplète. Vous devez la modifier pour ajouter une vérification de portée. –

-1
^[0-9]{0,2}\.?[0-9]{0,2}$ 

vous pouvez l'essayer ici: http://www.regular-expressions.info/javascriptexample.html

+0

Ne fonctionne pas pour tous les exemples. –

+1

En fait, cela accepte également les nombres entiers à 3 ou 4 chiffres (100-999 et 1000-9999) ainsi que la chaîne vide et la chaîne '.' – eldarerathis

+0

@Mark Byers, cela fonctionne pour tous les exemples cités: 0.1 00.01, 0,11, 1, 1,0 1,00. Et, merci de signaler @eldarerathis - il correspond aussi bien aux nombres entiers à 3/4 chiffres qu'à la chaîne vide: - / – kartheek

Questions connexes