• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    iOS 中使用正则表达式判断身份证格式及银行卡号格式是否正确(推荐)

    1.有时候我们会用到上传身份证号,或者银行卡号,这个时候就需要我们对身份证号以及银行卡号,进行基本的判断。

    下面便是身份证号的判断返回YES是合法,反之不合法

    #pragma mark 判断身份证号是否合法
    - (BOOL)judgeIdentityStringValid:(NSString *)identityString {
      if (identityString.length != 18) return NO;
      // 正则表达式判断基本 身份证号是否满足格式
      NSString *regex2 = @"^(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$)|(^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])((\\d{4})|\\d{3}[Xx])$)$";
      NSPredicate *identityStringPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
      //如果通过该验证,说明身份证格式正确,但准确性还需计算
      if(![identityStringPredicate evaluateWithObject:identityString]) return NO;
      //** 开始进行校验 *//
      //将前17位加权因子保存在数组里
      NSArray *idCardWiArray = @[@"7", @"9", @"10", @"5", @"8", @"4", @"2", @"1", @"6", @"3", @"7", @"9", @"10", @"5", @"8", @"4", @"2"];
      //这是除以11后,可能产生的11位余数、验证码,也保存成数组
      NSArray *idCardYArray = @[@"1", @"0", @"10", @"9", @"8", @"7", @"6", @"5", @"4", @"3", @"2"];
      //用来保存前17位各自乖以加权因子后的总和
      NSInteger idCardWiSum = 0;
      for(int i = 0;i  17;i++) {
        NSInteger subStrIndex  = [[identityString substringWithRange:NSMakeRange(i, 1)] integerValue];
        NSInteger idCardWiIndex = [[idCardWiArray objectAtIndex:i] integerValue];
        idCardWiSum      += subStrIndex * idCardWiIndex;
      }
      //计算出校验码所在数组的位置
      NSInteger idCardMod=idCardWiSum%11;
      //得到最后一位身份证号码
      NSString *idCardLast= [identityString substringWithRange:NSMakeRange(17, 1)];
      //如果等于2,则说明校验码是10,身份证号码最后一位应该是X
      if(idCardMod==2) {
        if(![idCardLast isEqualToString:@"X"]||[idCardLast isEqualToString:@"x"]) {
          return NO;
        }
      }else{
        //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
        if(![idCardLast isEqualToString: [idCardYArray objectAtIndex:idCardMod]]) {
          return NO;
        }
      }
      return YES;
    }

    在接下来便是银行卡号的的判断返回YES或者是真是合法,反之不合法

    #pragma mark 判断银行卡号是否合法
    -(BOOL)isBankCard:(NSString *)cardNumber{
      if(cardNumber.length==0){
        return NO;
      }
      NSString *digitsOnly = @"";
      char c;
      for (int i = 0; i  cardNumber.length; i++){
        c = [cardNumber characterAtIndex:i];
        if (isdigit(c)){
          digitsOnly =[digitsOnly stringByAppendingFormat:@"%c",c];
        }
      }
      int sum = 0;
      int digit = 0;
      int addend = 0;
      BOOL timesTwo = false;
      for (NSInteger i = digitsOnly.length - 1; i >= 0; i--){
        digit = [digitsOnly characterAtIndex:i] - '0';
        if (timesTwo){
          addend = digit * 2;
          if (addend > 9) {
            addend -= 9;
          }
        }
        else {
          addend = digit;
        }
        sum += addend;
        timesTwo = !timesTwo;
      }
      int modulus = sum % 10;
      return modulus == 0;
    }

    以上所述是小编给大家介绍的iOS 中使用正则表达式判断身份证格式及银行卡号格式是否正确(推荐),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    您可能感兴趣的文章:
    • iOS App开发中Objective-C使用正则表达式进行匹配的方法
    • 正则表达式在IOS中的应用及IOS中三种正则表达式的使用与比较
    • iOS 正则表达式判断手机号码、固话
    • iOS 正则表达式判断纯数字及匹配11位手机号码的方法
    • IOS开发常用的正则表达式
    • iOS中使用正则表达式NSRegularExpression 来验证textfiled输入的内容
    • iOS正则表达式验证手机号、邮箱、身份证号等
    • ios利用正则表达式判断手机号码格式是否正确的实例
    • Objective-C中利用正则去除非数字字母汉字方法实例
    上一篇:利用js给DropdownList赋值实例
    下一篇:详解Java判断是否是整数,小数或实数的正则表达式
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    iOS 中使用正则表达式判断身份证格式及银行卡号格式是否正确(推荐) iOS,中,使用,正则,表达式,