iOS TextField限制只能输入身份证内容

2017-11-17  本文已影响32人  野生塔塔酱
NSCharacterSet *_set = [NSCharacterSet characterSetWithCharactersInString:@"0123456789xX"];;

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    
         if ([string isEqualToString:@""]) {//退格键 如果不加这句 无法删除输入的内容
            return YES;
        }
        
        if (textField.text.length >= 18) {//大于18位无法再继续输入
            return NO;
        }
        
        NSRange range = [string rangeOfCharacterFromSet:_set];
        
        //判断输入的内容是否是规定的内容范围内 如果不是不做更改 如果是才输入
        if (range.length == 0) {
            return NO;
        }else{
            return YES;
        }
   
    return YES;
    
}

如果只是需要判断一个字符串是否是身份证格式还可以用正则表达式判断

+ (BOOL)validateIdentityCard:(NSString *)identityCard
{
    if (identityCard.length <= 0) {
        return NO;
    }
    NSString *regex = @"^(\\d{14}|\\d{17})(\\d|[xX])$";
    NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
    return [identityCardPredicate evaluateWithObject:identityCard];
}
上一篇 下一篇

猜你喜欢

热点阅读