Estoy buscando una expresión regular para que coincida con el siguiente -100..100:0.01
. El significado de esta expresión es que el valor puede incrementarse en 0.01 y debe estar en el rango -100 a 100.expresión regular en iOS
¿Alguna ayuda?
Estoy buscando una expresión regular para que coincida con el siguiente -100..100:0.01
. El significado de esta expresión es que el valor puede incrementarse en 0.01 y debe estar en el rango -100 a 100.expresión regular en iOS
¿Alguna ayuda?
(\b|-)(100(\.0+)?|[1-9]?[0-9](\.[0-9]{1,2})?\b
Explicación:
(\b|-) # word boundary or -
( # Either match
100 # 100
(\.0+)? # optionally followed by .00....
| # or match
[1-9]? # optional "tens" digit
[0-9] # required "ones" digit
( # Try to match
\. # a dot
[0-9]{1,2}# followed by one or two digits
)? # all of this optionally
) # End of alternation
\b # Match a word boundary (make sure the number stops here).
if(val>= -100 && val <= 100)
{
NSString* valregex = @"^[+|-]*[0-9]*.[0-9]{1,2}";
NSPredicate* valtest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", valregex];
ret = [valtest evaluateWithObject:txtLastname.text];
if (!ret)
{
[alert setMessage:NSLocalizedString(@"More than 2 decimals", @"")];
[alert show];
}
}
funciona bien .. Thnx para los chicos esfuerzos!
¿Por qué quieres usar una expresión regular? ¿Por qué no acaba de hacer algo así (en pseudocódigo):
is number between -100 and 100?
yes:
multiply number by 100
is number an integer?
yes: you win!
no: you don't win!
no:
you don't win!
Usted podría utilizar NSRegularExpression
lugar. No apoyar \b
, por cierto, si usted tiene que escapar de ella en la cadena:
NSString *regex = @"\\b-?1?[0-9]{2}(\\.[0-9]{1,2})?\\b";
embargo, creo que \\W
sería una mejor idea, ya \\b
mete hasta detectar el signo negativo en el número.
Una de esperar un mejor ejemplo:
NSString *string = <...your source string...>;
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"\\W-?1?[0-9]{2}(\\.[0-9]{1,2})?\\W"
options:0
error:&error];
NSRange range = [regex rangeOfFirstMatchInString:string
options:0
range:NSMakeRange(0, [string length])];
NSString *result = [string substringWithRange:range];
espero que esto ayude. :)
EDITAR: se ha corregido según el siguiente comentario.
'Rango NSRange * debe ser' Rango NSRange' – Arnaud
¿Qué significa "querer resolver esto en expresiones regulares"? –
quiero obtener una expresión regular, que puedo evaluar en mi aplicación de iOS. – Cannon
Es '-100..100: 0.01' una representación literal, o puede dar algunos ejemplos. De lo contrario, es una pérdida de tiempo. – sln