Ios 正在验证uitextbox,以便它只返回0.5到24之间的数字

Ios 正在验证uitextbox,以便它只返回0.5到24之间的数字,ios,regex,validation,uitextfielddelegate,Ios,Regex,Validation,Uitextfielddelegate,您好,我使用以下代码,所以我的系统只验证要输入到文本框中的数字。这很好。然而,我刚刚意识到,在一个文本字段上,我需要它只验证0.5到24之间的数字,可能是使用正则表达式,但障碍是,即使我想知道如何正确地获得正则表达式,我将如何合并到函数中,该函数既只允许数字,也只允许0.5到24之间的数字。基本上,人们可以选择在一天30分钟到24小时之间使用设备,任何字段保留为0都会导致错误 我在这里尝试做的是trap textfield2,它是要设置为最大24的字段。我的问题是,我该如何限制这个数字,如果我有

您好,我使用以下代码,所以我的系统只验证要输入到文本框中的数字。这很好。然而,我刚刚意识到,在一个文本字段上,我需要它只验证0.5到24之间的数字,可能是使用正则表达式,但障碍是,即使我想知道如何正确地获得正则表达式,我将如何合并到函数中,该函数既只允许数字,也只允许0.5到24之间的数字。基本上,人们可以选择在一天30分钟到24小时之间使用设备,任何字段保留为0都会导致错误

我在这里尝试做的是trap textfield2,它是要设置为最大24的字段。我的问题是,我该如何限制这个数字,如果我有陷阱,我该如何返回它

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range      replacementString:(NSString *)string
        {
    // First, create the text that will end up in the input field if you'll return     YES: 
        if (textField == textField2) {   }
        NSString *resultString = [textField.text stringByReplacingCharactersInRange:range     withString:string];
        NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];   
        [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
        NSNumber* resultingNumber =     [numberFormatter numberFromString:resultString];       
       //[numberFormatter release];
        return     resultingNumber != nil;
   }

我最近也做过类似的事情,但我会努力使之适应你的情况。如果我吃了一行代码,在我翻出一行新代码之前请先给我打电话。。。很晚了;)

-(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串
{
n错误*错误=NULL;
//检查粘贴的文本与有效的小数
//下面的正则表达式将检查精度为2的十进制数
NSRegularExpression*regexNumeric=[[NSRegularExpression alloc]initWithPattern:@“^([0-9]+)?(\\.([0-9]{1,2})?$”选项:nsregularexpressioncase不敏感错误:&错误];
if([regexNumeric NumberOfMatchesInstalling:string选项:0范围:NSMakeRange(0,[string length])]]>0)
{
//找到一个有效的条目
开关([字符串长度])
案例0:
案例1:
{
//这始终是一个有效条目,因为该字段为空或0-9或0。
返回YES;
打破
}
案例2:
{
//需要处理整数、以“.”开头的小数和以“0”开头的小数。这是有效的
如果(([string-floatValue]=0.5))| |([string-isEqualToString:@“0.”)
{
返回YES;
}
其他的
{
返回否;
}
打破
}
案例3:
案例4:
案例5:
{
//将处理所有其他案件
如果(([string floatValue]=0.5))
{
返回YES;
}
其他的
{
返回否;
}
打破
}
违约:
{
//不知道你是怎么来的!
返回否;
}
}
其他的
{
返回否;
}
}

使用此正则表达式(^([1][0-9]|[2][0-4]|(0?[1-9])([0-9])| 0[.][5-9][0-9]$)验证0.5到24之间的数字。

如果(num2==0 | num1 24){在一个完全不同的代码部分,它会弹出一个消息框,我需要的验证在这里简单完成,不需要正则表达式,–Imran Raja昨天

正则表达式不是一个确定数字大小的好工具,而不是使用文本框和验证,尝试让用户更容易。使用时间选择器,或使用两个文本lds使用步进器进行数小时和数分钟操作。实现很有趣,但我不确定它是否处理以“.”开头的数字(很容易修复)。@D80Buckeye:(^([1][0-9]|[2][0-4]|(0?[1-9])([0-9])|(0?[.][5-9][0-9]$).Simple fix for number以开始。我很抱歉让您这么做,但我已经找到了答案,它位于完全不同的代码区域,有人告诉我如何思考导致我这样做的用户交互和体验(num2==0 | | num1 24){在一个完全不同的代码部分,它会弹出一个messagebox,我需要的验证在这里简单地完成,不需要正则表达式,不用担心-我需要从实际工作中分心。大部分都是用Switch语句编写的。我本来打算建议在这个DEL之外进行数字验证门牌电话,但很无聊:)谢谢,我真的很感谢你的hlp
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSError *error = NULL;
    //check for text being pasted vs valid decimal
    //below regex will check for a decimal number with a precision of 2

    NSRegularExpression *regexNumeric = [[NSRegularExpression alloc]initWithPattern:@"^([0-9]+)?(\\.([0-9]{1,2})?)?$" options:NSRegularExpressionCaseInsensitive error:&error];
    if ([regexNumeric numberOfMatchesInString:string options:0 range:NSMakeRange(0, [string length])] > 0)
    {
        //found a valid entry
        switch ([string length])
        case 0:
        case 1:
        {
            //this is always a valid entry since the field is either empty or 0-9 or .
            return YES;
            break;
        }
        case 2:
        {
            //Need to handle whole numbers, decimals starting with ".", and a decimal starting with "0." which is valid
            if ((([string floatValue] <= 24.0) && ([string floatValue] >= 0.5)) || ([string isEqualToString:@"0."]))
            {
                return YES;
            }
            else
            {
                return NO;
            }
            break;
        }
        case 3:
        case 4:
        case 5:
        {
            //will handle all other cases
            if (([string floatValue] <= 24.0) && ([string floatValue] >= 0.5))
            {
                return YES;
            }
            else
            {
                return NO;
            }
            break;
        }
        default:
        {
            //no idea how you got here!
            return NO;
        }
    }
    else
    {
        return NO;
    }
}