2010-01-15 10 views

risposta

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

 

+0

Sostituisci il secondo + con a * in modo che corrisponda a cose come" .4 "(accreditato nelle note in la risposta errata sotto). –

+1

Chiunque usi questo per eseguire la convalida su caselle di testo di solo numero, se il motore regex lo supporta, è possibile avvolgere l'espressione con ancore di inizio e fine, ad esempio '^ (\ + | -)? ([0-9] + (\. [0-9] +)) $ '. – kevin628

+0

@ kevin628 Ricorda che alcuni motori regex devono avere un flag attivato per utilizzare quegli ancoraggi iniziali e finali. So per esempio che le espressioni regolari di Java hanno bisogno (? M) all'inizio di usare i simboli '^' e '$'. – Rossiar

3

Prova questo:

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

Si noti che questo non riuscirà a riconoscere modelli come ".4" (nessuno zero iniziale) o "10" (nessun decimale). Ma vista la vaghezza della "domanda", non ho idea se sia un problema o meno. – BlairHippo

+0

sì; dal momento che OP ha detto "decimale", penso che il punto decimale sia obbligatorio, ma sono anche incerto su quel numero intero opzionale –

+1

Bene, se andiamo con il punto decimale obbligatorio, potremmo sempre farlo come "[+ -]? \ d * \. \ d +". Gestisce lo 0 opzionale iniziale, almeno. – BlairHippo

7

Try This! Ho anche usato in questo modo

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

Regole:

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; 
} 

evidenziati sotto, sono i numeri che restituiscono TRUE per questo regex: enter image description here enter image description here

Problemi correlati