在項目開發過程當中,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;
}
}