最近在做注冊登陸的認證,需求:
用戶名為6~12位“字符”
也就是說,一個英文是一個字符,一個中文是兩個字符,用正則表達式好像不容易實現(xiàn)吧?
沒什么好說的,直接上答案了:
判斷字符數(shù)
//判斷字符串為6~12位“字符”
- (BOOL)isValidateName:(NSString *)name{
NSUInteger character = 0;
for(int i=0; i< [name length];i++){
int a = [name characterAtIndex:i];
if( a >= 0x4e00 && a <= 0x9fa5){ //判斷是否為中文
character +=2;
}else{
character +=1;
}
}
if (character >=6 && character <=12) {
return YES;
}else{
return NO;
}
}
判斷郵箱號
//如果符合郵箱格式,返回YES
-(BOOL)isValidateEmail:(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];
}
判斷密碼為6~20位字符
- (BOOL)isValidatePassword:(NSString *)password{
NSString *regex = @"^[\x21-\x7E]{6,20}$";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
return [pred evaluateWithObject:password];
}
判斷手機格式
+ (BOOL)checkTel:(NSString *)str{
NSString *regex = @"^[1][3-8]+\\d{9}";//手機號碼變化大,所以沒有做更精確
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
return [pred evaluateWithObject:str];;
}
判斷郵編格式為6位數(shù)字
+ (BOOL)checkPostCode:(NSString *)str{
NSString *regex = @"^[0-9]{6}$";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
return [pred evaluateWithObject:str];
}
- 如果有什么疑問,可以在評論區(qū)一起討論;
- 如果有什么不正確的地方,歡迎指導!
注:本文首發(fā)于 iHTCboy's blog,如若轉(zhuǎn)載,請注明來源。