【ios】表单验证工具

新建一个NSObject类,起一个工具类的名字,我的是QCTools

然后把下边代码分 .h   .m  文件粘进去,结束

本表单工具主要包括

  • 字符串为空判断
  • 判断是否为手机号
  • 判断时候为身份证号
  • 判断是否为邮箱
  • 判断是否为银行卡号
  • 按指定分隔符拆分字符串
  • 按指定分隔符拼接字符串

.h文件中定义类方法:

/*

判断字符串是否为空

 */

+(BOOL) isBlankString:(NSString *)string;

/*

 判断是否为手机号

 */

+(BOOL)isMobileNumber:(NSString*)mobileNum;

/*

 判断是否是身份证号

 */

+(BOOL)isIdCard:(NSString *)idCard;

/*

 判断是否为邮箱

 */

+(BOOL)isEmail:(NSString*)email;

/*

 判断是否为银行卡号

 */

+(BOOL)isBankCard:(NSString *)cardNo;

/*

 数组=>字符串 按指定分隔符拼接字符串

 */

+(NSString*)jointStringBaseArr:(NSMutableArray*)arr BySeparator:(NSString *)sepa;

 

/*

 字符串=>数组 按指定分隔符拆分字符串

 */

+(NSArray*)splitString:(NSString *)string BySeparator:(NSString *)sepa;

 

.m文件中方法实现

/*

 字符串为空判断

 */

 

+(BOOL) isBlankString:(NSString *)string {

    

    if (string == nil || string == NULL) {

        return YES;

    }

    

    if ([string isKindOfClass:[NSNull class]]) {

        return YES;

    }

    

    if ([[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0) {

        return YES;

    }

    return NO;

}

/*

 手机号判断

 */

+(BOOL)isMobileNumber:(NSString*)mobileNum {

    

    //   电信号段:133/153/180/181/189/177

    //   联通号段:130/131/132/155/156/185/186/145/176

    //   移动号段:134/135/136/137/138/139/150/151/152/157/158/159/182/183/184/187/188/147/178

    //   虚拟运营商:170

    NSString *MOBILE = @"^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|7[06-8])\\d{8}$";

    

    NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];

    

    

    return[regextestmobile evaluateWithObject:mobileNum];

}

/*

 身份证判断

 */

+(BOOL)isIdCard:(NSString *)identityCard{

    //判断是否为空

    if (identityCard==nil||identityCard.length <= 0) {

        return NO;

    }

    //判断是否是18位,末尾是否是x

    NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$";

    NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];

    if(![identityCardPredicate evaluateWithObject:identityCard]){

        return NO;

    }

    //判断生日是否合法

    NSRange range = NSMakeRange(6,8);

    NSString *datestr = [identityCard substringWithRange:range];

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

    [formatter setDateFormat : @"yyyyMMdd"];

    if([formatter dateFromString:datestr]==nil){

        return NO;

    }

    

    //判断校验位

    if(identityCard.length==18)

    {

        NSArray *idCardWi= @[ @"7", @"9", @"10", @"5", @"8", @"4", @"2", @"1", @"6", @"3", @"7", @"9", @"10", @"5", @"8", @"4", @"2" ]; //将前17位加权因子保存在数组里

        NSArray * idCardY=@[ @"1", @"0", @"10", @"9", @"8", @"7", @"6", @"5", @"4", @"3", @"2" ]; //这是除以11后,可能产生的11位余数、验证码,也保存成数组

        int idCardWiSum=0; //用来保存前17位各自乖以加权因子后的总和

        for(int i=0;i<17;i++){

            idCardWiSum+=[[identityCard substringWithRange:NSMakeRange(i,1)] intValue]*[idCardWi[i] intValue];

        }

        

        int idCardMod=idCardWiSum%11;//计算出校验码所在数组的位置

        NSString *idCardLast=[identityCard substringWithRange:NSMakeRange(17,1)];//得到最后一位身份证号码

        

        //如果等于2,则说明校验码是10,身份证号码最后一位应该是X

        if(idCardMod==2){

            if([idCardLast isEqualToString:@"X"]||[idCardLast isEqualToString:@"x"]){

                return YES;

            }else{

                return NO;

            }

        }else{

            //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码

            if([idCardLast intValue]==[idCardY[idCardMod] intValue]){

                return YES;

            }else{

                return NO;

            }

        }

    }

    return NO;

}

/*

 邮箱验证

 */

 

+(BOOL)isEmail:(NSString *)email{

    

    NSString *regex = @"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";

    

    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];

    

    return [emailTest evaluateWithObject:email];

 

}

 

/*

 银行卡号验证

 */

+(BOOL)isBankCard:(NSString *)cardNo{

    

    int oddsum = 0;     //奇数求和

    int evensum = 0;    //偶数求和

    int allsum = 0;

    int cardNoLength = (int)[cardNo length];

    int lastNum = [[cardNo substringFromIndex:cardNoLength-1] intValue];

    

    cardNo = [cardNo substringToIndex:cardNoLength - 1];

    for (int i = cardNoLength -1 ; i>=1;i--) {

        NSString *tmpString = [cardNo substringWithRange:NSMakeRange(i-1, 1)];

        int tmpVal = [tmpString intValue];

        if (cardNoLength % 2 ==1 ) {

            if((i % 2) == 0){

                tmpVal *= 2;

                if(tmpVal>=10)

                    tmpVal -= 9;

                evensum += tmpVal;

            }else{

                oddsum += tmpVal;

            }

        }else{

            if((i % 2) == 1){

                tmpVal *= 2;

                if(tmpVal>=10)

                    tmpVal -= 9;

                evensum += tmpVal;

            }else{

                oddsum += tmpVal;

            }

        }

    }

    

    allsum = oddsum + evensum;

    allsum += lastNum;

    if((allsum % 10) == 0)

        return YES;

    else

        return NO;  

}

/*

 按指定分隔符拼接字符串

 */

 

+(NSString *)jointStringBaseArr:(NSMutableArray *)arr BySeparator:(NSString *)sepa{

    

    int i = 0;

    NSString *selectStr = [NSString new];

    for (NSString *str in arr) {

        if (str.length == 0 || [str isEqual:@""]) {

            continue;

        }

        

        if (i == 0) {

            selectStr = [NSString stringWithFormat:@"%@",str];

        }

        

        if (i > 0) {

            selectStr = [NSString stringWithFormat:@"%@%@%@",selectStr,sepa,str];

        }

        i++;

    }

    return selectStr;

}

/*

 按指定分隔符拆分字符串

 */

+(NSArray *)splitString:(NSString *)string BySeparator:(NSString *)sepa{    

    NSString *str = string;

    NSArray *arr= [str componentsSeparatedByString:sepa];

    return arr;

}

打完收工,一切为了效率

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值