首页 > 代码库 > NSString格式校验

NSString格式校验

  在项目开发过程中,NSString类型的变量是经常用到的,而且我们常常会对其格式进行对应的各种校验,你比如,在登录注册的时候,需要验证用户名的长度,用户名的字符组成等等,其实现在也有很多第三方提供的NSString的Category老方便我们做各种判断。由于最近做的一个项目需要判断密码的格式。主要在以下几个方面。

  1.判断密码的强度:在一些项目中,不允许密码中出现“123456”,“123”,“abcde”等这种比较简单而且有规律的密码。

  

/**

 *  判断密码的强度

 *

 *  @param password 密码字符串

 *

 *  @return如果密码比较强则返回YES,如果密码较弱返回是NO

 */

- (BOOL)judgePassWordStrengthWithPassWord:(NSString*)password{

    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;

    }

}