textfield文本框限制

長度限制:ide

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {lua

    if (range.length == 1 && string.length == 0) {.net

        return YES;orm

    }else if (textField.text.length >= 11) {ci

        textField.text = [textField.text substringToIndex:11];get

        return NO;string

    }it

    return YES;table

}ast

 

-(void)textFieldDidChange:(UITextField *)sender{

         if (sender.text.length >= 11) {

            [sender resignFirstResponder];

        }

}

 

郵編正則判斷:

+ (BOOL)isPostCode:(NSString *)str {

    NSString *regex = @"^[1-9][0-9]{5}$";

    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];

    if ([pred evaluateWithObject:str]) {

        return YES;

    }else {

        return NO;

    }

}

 

手機號正則判斷:

+ (BOOL)isPhoneNumber:(NSString *)str {

    str = [str stringByReplacingOccurrencesOfString:@" " withString:@""];

    if (str.length != 11)

    {

        return NO;

    }else{

        return [[NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"^(1[3-9])\\d{9}$"] evaluateWithObject:str];

    }

}

 

身份證號碼正則判斷:

+ (BOOL) isValidateIdentityCard: (NSString *)identityCard

{

    if (identityCard.length != 18) {

        return NO;

    }

    BOOL flag;

    if (identityCard.length <= 0) {

        flag = NO;

        return flag;

    }

    NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$";

    NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];

    return [identityCardPredicate evaluateWithObject:identityCard];

}

 

身份證號末尾X自動補全:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

    

       NSUInteger length = textField.text.length + string.length;

        NSString *str = [NSString stringWithFormat:@"%@%@", textField.text, string];

        // 當輸入到17位數的時候,經過theLastIsX方法判斷最後一位是否是X

            if (length == 17 && [self theLastIsX:str] && ![loadingUserInfo stringIsEmpty:string]) {

                // 若是是17位,並經過前17位計算出18位爲X,自動補全,並返回NO,禁止編輯。

            textField.text = [NSString stringWithFormat:@"%@%@X", textField.text, string];

            countOflogin = textField.text;

 

            return NO;

        }

        // 若是是其餘狀況則直接返回小於等於18(最多輸入18位)

        return length <= 18;


}

 

//MARK: 判斷最後一個是否是X

- (BOOL)theLastIsX:(NSString *)IDNumber {

    NSMutableArray *IDArray = [NSMutableArray array];

    for (int i = 0; i < 17; i++) {

        NSRange range = NSMakeRange(i, 1);

        NSString *subString = [IDNumber substringWithRange:range];

        [IDArray addObject:subString];

    }

    NSArray *coefficientArray = [NSArray arrayWithObjects:@"7", @"9", @"10", @"5", @"8", @"4", @"2", @"1", @"6", @"3", @"7", @"9", @"10", @"5", @"8", @"4", @"2", nil];

    int sum = 0;

    for (int i = 0; i < 17; i++) {

        int coefficient = [coefficientArray[i] intValue];

        int ID = [IDArray[i] intValue];

        sum += coefficient * ID;

    }

    if (sum % 11 == 2) return YES;

    else return NO;

}

相關文章
相關標籤/搜索