#define kAlphaNum @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
// 判断长度大于8位后再接着判断是否同时包含数字和字符
+ (BOOL)hasNumAndLetter:(NSString *)string {
BOOL result = false;
if ([string length] >= 8 && [string length] <= 16){
// 判断长度大于8位后再接着判断是否同时包含数字和字符
NSString * regex = @"^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
result = [pred evaluateWithObject:string];
}
return result;
}
// 判断是否可以输入
+ (BOOL)canInputText:(NSString *)text string:(NSString *)string {
NSCharacterSet *cs;
cs = [[NSCharacterSet characterSetWithCharactersInString:kAlphaNum] invertedSet];
NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""]; //按cs分离出数组,数组按@""分离出字符串
BOOL canChange = [string isEqualToString:filtered];
if(text.length <= 16) {
return canChange;
}
return NO;
}
使用:
1.限制只能输入数字和字符
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
// 限制只能输入数字和字符
if ([self.passworld isEqual:textField]) {
return [NSString canInputText:textField.text string:string];
}
return YES;
}
2.必须输入数字+字母
if (self.passworld.text.length<8 ||self.passworld.text.length >16) {
[SVProgressHUD showErrorWithStatus:@"密码长度限制为8-16位"];
return;
}
if (![NSString hasNumAndLetter:self.passworld.text]) {
[SVProgressHUD showErrorWithStatus:@"请输入8-16位数字+字母组合"];
return;
}
网友评论