0

嗨,我正在使用以下代码,所以我的系统只验证要输入到我的文本框中的数字,这很好。但是,我刚刚意识到在一个文本字段上 ii 将需要它来验证仅介于 0.5 到 24 之间的数字,可能使用正则表达式,即使弄清楚如何使正则表达式正确,我将如何将其纳入函数,这两者都是只允许数字,并且只允许从 0.5 到 24 的数字。基本上人们可以选择在一天 30 分钟到 24 小时之间使用设备,任何保留为 0 的字段都会导致错误。

我在这里尝试做的是陷阱 textfield2,这是要设置为最大 24 的字段。我遇到的问题是我什至如何限制数量,如果 ic 是陷阱,我如何将其返回

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

3 回答 3

1

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

于 2013-06-27T03:55:23.813 回答
0

if (num2 == 0 || num1 <= 0.000|| num3 == 0 || num4 == 0 || dnumb ==0 || num2 > 24) { 在代码的一个完全不同的部分,它会拉起一个消息框,我需要的验证只是在这里完成,不需要正则表达式, – Imran Raja 昨天

于 2013-06-28T15:49:19.010 回答
0

我最近做了类似的事情,但会尽量适应你的情况。如果我先写了一行代码,然后再给我一个新的,就叫我出来……太晚了;)

- (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;
    }
}
于 2013-06-27T03:53:43.523 回答