Подтвердить что ты не робот

Регулярное выражение в iOS

Я ищу регулярное выражение, соответствующее следующему -100..100:0.01. Смысл этого выражения заключается в том, что значение может увеличиваться на 0,01 и должно быть в диапазоне от -100 до 100.

Любая помощь?

4b9b3361

Ответ 1

Вместо этого вы можете использовать NSRegularExpression. Он поддерживает \b, btw, хотя вам нужно избежать его в строке:

NSString *regex = @"\\b-?1?[0-9]{2}(\\.[0-9]{1,2})?\\b";

Хотя, я думаю, что \\W будет лучшей идеей, так как \\b помешает обнаружить отрицательный знак на номере.

Надеюсь, лучший пример:

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

Надеюсь, это поможет.:)

EDIT: исправлено на основе приведенного ниже комментария.

Ответ 2

(\b|-)(100(\.0+)?|[1-9]?[0-9](\.[0-9]{1,2})?\b

Пояснение:

(\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).

Ответ 3

Почему вы хотите использовать регулярное выражение? Почему бы просто не сделать что-то вроде (в псевдокоде):

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!

Ответ 4

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

отлично работает.. Thnx для усилий ребята!