正则表达式,用于检查iOS中的整数或十进制数

时间:2014-07-02 12:17:29

标签: ios regex nsstring nspredicate nsregularexpression

我需要检查文本是整数还是十进制数。

我尝试使用以下内容:

NSString *expression =  @"\\d*";         
NSError *error ;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression options:NSRegularExpressionCaseInsensitive error:&error];
NSTextCheckingResult *isValid = [regex firstMatchInString:txt options:0 range:NSMakeRange(0, [txt length])];

但即使文本为2.14.256,结果也是如此。

3 个答案:

答案 0 :(得分:2)

@Yogesh:谢谢老兄。但是,这个正则表达式适合我的需要。

- (BOOL)numberValidation:(NSString *)text {
    NSString *regex = @"^([0-9]*|[0-9]*[.][0-9]*)$";
    NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
    BOOL isValid = [test evaluateWithObject:text];
    return isValid;
}

这个

答案 1 :(得分:0)

使用NSPredicate检查使用正则表达式进行数字验证

- (BOOL)numberValidation:(NSstring *)text {
    NSString *regex = @"^([0-9]+)?$";
    NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
    BOOL isValid = [test evaluateWithObject:text];
    return isValid;
}

答案 2 :(得分:0)

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

下面突出显示的是此正则表达式返回 TRUE 的数字: enter image description here enter image description here