在项目开发过程当中,NSString类型的变量是常常用到的,并且咱们经常会对其格式进行对应的各类校验,你好比,在登陆注册的时候,须要验证用户名的长度,用户名的字符组成等等,其实如今也有不少第三方提供的NSString的Category老方便咱们作各类判断。因为最近作的一个项目须要判断密码的格式。主要在如下几个方面。数组
1.判断密码的强度:在一些项目中,不容许密码中出现“123456”,“123”,“abcde”等这种比较简单并且有规律的密码。编码
/**lua
* 判断密码的强度spa
*orm
* @param password 密码字符串开发
*字符串
* @return若是密码比较强则返回YES,若是密码较弱返回是NOinput
*/it
- (BOOL)judgePassWordStrengthWithPassWord:(NSString*)password{io
NSArray *array = @[@"000000",@"111111",@"11111111",@"112233",@"123123",@"123321",@"123456",@"12345678",@"654321",@"666666",@"888888",@"abcdef",@"abcabc",@"abc123",@"a1b2c3",@"aaa111",@"123qwe",@"qwerty",@"qweasd",@"admin",@"password",@"p@ssword",@"passwd",@"iloveyou",@"5201314",@"password",@"123456",@"12345678",@"qwerty",@"abc123",@"monkey",@"1234567",@"letmein",@"trustno1",@"dragon",@"baseball",@"111111",@"iloveyou",@"master",@"sunshine",@"ashley",@"bailey",@"passw0rd",@"shadow",@"123123",@"654321",@"superman",@"qazwsx",@"michael",@"football"];
NSRange range;
BOOL result = YES;
int count = array.count;
for (int i = 0; i < count; i++) {
range = [password rangeOfString:array[i]];
if(range.location != NSNotFound){
result = NO;
}
}
return result;
}
能够看到,对于一些不容许出现的密码,组合成一个数组,而后针对每个数组中的元素来和密码进行比对,看密码是否和其相同,或者包含。
2.判断密码中是否有汉字,对于一些字符串因为编码的缘由,不容许出现汉字。
/**
* 判断密码是否包含汉字
*
* @param inputString 字符串
*
* @return若是包含汉字,则返回YES,若是不包含汉字,则返回NO
*/
-(BOOL)isHasChinese:(NSString *)inputString{
for(int i=0; i< [inputString length];i++){
int a = [inputString characterAtIndex:i];
if( a > 0x4e00 && a < 0x9fff)
return YES;
}
returnNO;
}
判断字符串中是否包含汉字,只能经过拆解字符串中的汉字,而后针对每一个字符的ascall码来判断。
3.判断字符串为手机号码
-(BOOL)isNumText:(NSString *)aNumString
{
NSString *regex = @"^((13[0-9])|(147)|(15[^4,\\D])|(18[0-9]))\\d{8}$";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
BOOL isPhoneNumRight;
isPhoneNumRight = [predicate evaluateWithObject:aNumString];
if(isPhoneNumRight)
{
return NO;
}else
{
return YES;
}
}