Regexp pour un double
J'ai eu cette regexp "^[0-9]+\.?[0-9]*$")
pour correspondre à un nombre double ou un nombre entier dans visual c++, mais il semble ne pas fonctionner. toutes les idées. c'est de cette façon que je m'applique le code:
if ( System::Text::RegularExpressions::Regex::IsMatch(e0, "^[0-9]+\.?[0-9]*$"))
{
e0_val = System::Convert::ToDouble(e0);
}
Pourquoi pensez-vous que cela ne fonctionne pas? Donner un exemple.
travail gimme teh codez" n'est pas une bonne question.
Les espaces au début ou à la fin peut-être? Pouvez-vous poster le code qui l'utilise?
lorsque j'essaie de l'utiliser pour valider un certain nombre d'entrée dans une zone de texte, il renvoie un message indiquant que le nombre 0.16 n'est pas un nombre
Êtes-vous à l'aide de C++/CLI? Si oui, pourquoi n'utilisez-vous pas Double::TryParse à la place?
travail gimme teh codez" n'est pas une bonne question.
Les espaces au début ou à la fin peut-être? Pouvez-vous poster le code qui l'utilise?
lorsque j'essaie de l'utiliser pour valider un certain nombre d'entrée dans une zone de texte, il renvoie un message indiquant que le nombre 0.16 n'est pas un nombre
Êtes-vous à l'aide de C++/CLI? Si oui, pourquoi n'utilisez-vous pas Double::TryParse à la place?
OriginalL'auteur cobie | 2012-05-09
Vous devez vous connecter pour publier un commentaire.
Il n'y a rien de mal avec la regex par dire, c'est votre échapper à la faute. Vous avez besoin de doubler échapper à la
\
personnage puisque c'est aussi une chaîne C++ caractère d'échappement.De plus il y a un cas limite où cette expression pourrait penser que
1.
est valide flottant pointeur nombre. Donc, vous pourriez être mieux avec/^[0-9]+(\\.[0-9]+)?$
qui élimine cette possibilité.OriginalL'auteur Benj
de l'expression régulière ci-dessus n'est pas parfait, puisqu'il accepte "09", qui n'est pas un nombre valide. une meilleure expression serait:
où:
en théorie, la fracture de la partie devrait être écrit comme "(\.[0-9]*[1-9])?"
au lieu de cela, parce qu'un certain nombre ne doit pas avoir de résidus de zéros. dans la pratique, la chaîne source peut avoir été créé avec un nombre fixe de chiffres.g:
de sorte qu'il peut facilement se terminent par un zéro caractère. et, bien sûr, ce sont tous les points fixes des représentations, pas de doubles d'eux-mêmes. un double numéro
être écrit comme -1.23 e-4 ainsi au lieu de -0.000123.
OriginalL'auteur ThatsMe