2010-01-15 63 views

Respuesta

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

 

+0

Reemplace el segundo + con un * para que coincida con cosas como ".4" también (acreditado en las notas de la respuesta incorrecta a continuación). –

+1

Para cualquiera que use esto para validar en cuadros de texto de solo números, si su motor de expresiones regulares lo admite, puede ajustar la expresión con anclajes de inicio y fin, como '^ (\ + | -)? ([0-9] + (\. [0-9] +)) $ '. – kevin628

+0

@ kevin628 recuerde que algunos motores de expresiones regulares deben tener una bandera encendida para usar esos anclajes de inicio y fin. Sé por ejemplo que las expresiones regulares de Java necesitan (? M) al inicio para usar los símbolos '^' y '$'. – Rossiar

3

Prueba esto:

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

Tenga en cuenta que esto no reconocerá patrones como ".4" (sin cero a la izquierda) o "10" (sin decimal). Pero dada la vaguedad de la "pregunta", no tengo idea de si eso es un problema o no. – BlairHippo

+0

sí; dado que OP dijo "decimal", creo que el punto decimal es obligatorio, pero tampoco estoy seguro sobre ese entero opcional –

+1

Bueno, si vamos con el punto decimal obligatorio, siempre podríamos hacerlo como "[+ -]? \ d * \. \ d + ". Maneja el 0 líder opcional, al menos. – BlairHippo

7

Inténtelo! También he utilizado esta forma

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

Reglas:

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

Destacado continuación, son los números que devuelven TRUE para esta expresión regular: enter image description here enter image description here

Cuestiones relacionadas