2010-01-15 10 views

Répondre

13
(\+|-)?([0-9]+(\.[0-9]+)) 

 

+0

Remplacer le second + avec un * pour faire correspondre des choses comme ".4" aussi (crédité aux notes dans la réponse incorrecte ci-dessous). –

+1

Si vous utilisez cette option pour effectuer une validation sur des zones de texte uniquement numériques, si votre moteur regex la prend en charge, vous pouvez envelopper l'expression avec des ancres de début et de fin, comme par exemple '^ (\ + | -)? + (\. [0-9] +)) $ '. – kevin628

+0

@ kevin628 rappelez-vous que certains moteurs regex doivent avoir un indicateur activé pour utiliser ces ancres de début et de fin. Je sais par exemple que les expressions régulières Java ont besoin (? M) au début d'utiliser les symboles '^' et '$'. – Rossiar

3

Essayez ceci:

[+-]?\d+\.\d+ 
+0

Notez que cela échouera à reconnaître des motifs tels que ".4" (aucun zéro) ou "10" (pas de décimale). Mais étant donné l'imprécision de la «question», je n'ai aucune idée si c'est un problème ou non. – BlairHippo

+0

ouais; puisque PO dit "décimal", je pense que le point décimal est obligatoire, mais je ne suis pas sûr de cet entier optionnel –

+1

Eh bien, si nous allons avec le point décimal obligatoire, pourrait toujours le faire comme "[+ -]? \ d * \. \ d + ". Gère le 0 en option, au moins. – BlairHippo

7

essayer! Je l'ai aussi utilisé cette façon

"^-?[0-9]{1,12}(?:\.[0-9]{1,4})?$" 

Règles:

ex: ^-?[0-9]{1,12}(?:\.[0-9]{1,4})?$ 
^   # Start of string 
[0-9]{1,12} # Match 1-12 digits (i. e. 0-999999999999) 
(?:   # Try to match... 
\.   # a decimal point 
[0-9]{1,4} # followed by one to three digits (i. e. 0-9999) 
)?   # ...optionally 
$   # End of string 
1
+ (BOOL)isStringADecimalNumber:(NSString *)string 
{ 
    NSString *regex = @"([+]|-)?(([0-9]+[.]?[0-9]*)|([0-9]*[.]?[0-9]+))"; 

    NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; 

    BOOL stringIsADecimalNumber = [test evaluateWithObject:string]; 

    return stringIsADecimalNumber; 
} 

Mis en évidence ci-dessous, sont les chiffres qui reviennent TRUE pour cette regex: enter image description here enter image description here

Questions connexes