我需要检查文本是整数还是十进制数。
我尝试使用以下内容:
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
,结果也是如此。
答案 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
的数字: