iOS菜鸟联盟iOS Developer

iOS 实时监测textField中的内容类型(文字,数字,英文

2017-05-04  本文已影响37人  走向菜鸟的菜鸟

给需要监测的textField添加Target,使用UIControlEventEditingChanged监测输入框内容的变化。

[_customNameTF addTarget:self action:@selector(textFieldDidChange:) forControlEvents:(UIControlEventEditingChanged)];

当输入框的内容发生改变就会调用该方法

- (void)textFieldDidChange:(UITextField *)textField {
    _warningLabel.text = [self checkContentTypeWithString:textField.text];
}

将输入框中的内容进行正则判断

- (NSString *)checkContentTypeWithString:(NSString*)password{
    // 汉字条件
    NSRegularExpression *tTxtRegularExpression = [NSRegularExpression regularExpressionWithPattern:@"[\u4e00-\u9fa5]" options:NSRegularExpressionCaseInsensitive error:nil];
    
    //符合汉字条件的有几个字节
    NSUInteger tTxtMatchCount = [tTxtRegularExpression numberOfMatchesInString:password options:NSMatchingReportProgress range:NSMakeRange(0, password.length)];
    
    //数字条件
    NSRegularExpression *tNumRegularExpression = [NSRegularExpression regularExpressionWithPattern:@"[0-9]" options:NSRegularExpressionCaseInsensitive error:nil];
    
    //符合数字条件的有几个字节
    NSUInteger tNumMatchCount = [tNumRegularExpression numberOfMatchesInString:password options:NSMatchingReportProgress range:NSMakeRange(0, password.length)];
    
    //英文字条件
    NSRegularExpression *tLetterRegularExpression = [NSRegularExpression regularExpressionWithPattern:@"[A-Za-z]" options:NSRegularExpressionCaseInsensitive error:nil];
    
    //符合英文字条件的有几个字节
    NSUInteger tLetterMatchCount = [tLetterRegularExpression numberOfMatchesInString:password options:NSMatchingReportProgress range:NSMakeRange(0, password.length)];
    
    if(0 == password.length) {
        
        // 无内容
        return @"";
        
    }else if(tLetterMatchCount == password.length) {
        
        //全部符合英文,表示沒有数字
        return @"全部为英文";
        
    }else if(tNumMatchCount == password.length) {
        
        //全部符合数字,表示沒有英文
        return @"全部为数字";
        
    }else if(tTxtMatchCount == password.length){
        
        //全部为汉字
        return @"全部为汉字";
        
    } else if(tNumMatchCount + tLetterMatchCount == password.length) {
        
        //符合英文和符合数字条件的相加等于密码长度
        return @"全部为数字和英文结合";
        
    } else if(tNumMatchCount + tLetterMatchCount + tTxtMatchCount == password.length) {
        
        //内容为文字,数字,字母组合
        return @"内容为文字,数字,字母组合";
    }
    return @"规则错误";
}

效果图:


WechatIMG26.jpeg
WechatIMG24.jpeg
WechatIMG25.jpeg
WechatIMG22.jpeg
WechatIMG23.jpeg
上一篇下一篇

猜你喜欢

热点阅读