iOS 정규 표현 식 UITextField 입력 내용 제한

3492 단어 UITextField
머리말
정규 표현 식 으로 입력 텍스트 를 제어 하 는 것 은 매우 편리 합 니 다. 정규 표현 식 에 따라 UITextField 텍스트 내용 의 입력 을 제한 하 는 방법 을 기록 합 니 다.
코드
//  UITextField        
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    if (string.length == 0) return YES;
    //     ,       range,     ,         string,   textfield       
    NSString *checkStr = [textField.text stringByReplacingCharactersInRange:range withString:string];
    //     
    NSString *regex = @"^[0-9]+$";
    return [self validateStr:checkStr withRegex:regex];
}

//             
- (BOOL)validateStr:(NSString *)string withRegex:(NSString *)regex
{
    NSPredicate *resultStr = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
    return [resultStr evaluateWithObject:string];
}

총결산
입력 내용 이 요구 에 부합 되 는 지 에 따라 입력 여 부 를 판단 하면 입력 내용 을 제어 하 는 요구 에 도달 할 수 있 습 니 다. 구체 적 인 내용 이 어떻게 제한 되 는 지 는 정규 표현 식 이 어떤 지 봐 야 합 니 다. 상기 표현 식 은 입력 을 제한 하 는 내용 이 반드시 숫자 여야 합 니 다.
정규 표현 식
//     
- (BOOL)validatePassword:(NSString *)passWord {
    NSString *passWordRegex = @"^[a-zA-Z0-9]{6,20}+$";
    NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",passWordRegex];
    return [passWordPredicate evaluateWithObject:passWord];
}

//      
- (BOOL)validatePhoneNum:(NSString *)phoneNum {
    //    1  ,10  \d     
    NSString *phoneRegex = @"^(1)\\d{10}$";
    NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];
    return [phoneTest evaluateWithObject:phoneNum];
}

//  
- (BOOL) validateEmail:(NSString *)email
{
    NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
    return [emailTest evaluateWithObject:email];
}

좋은 웹페이지 즐겨찾기