银行卡正则表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了银行卡正则表达式相关的知识,希望对你有一定的参考价值。

  1. - (void)viewDidLoad {  
  2.     [super viewDidLoad];  
  3.     NSString *str = @"6226820011200783033";  
  4.     BOOL isRight = [self checkCardNo:str];  
  5.     if (!isRight) {  
  6.           
  7.         UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"不对" message:@"请重新输入卡号" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil, nil nil];  
  8.         [alert show];  
  9.     }else{  
  10.         UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"对" message:@"" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil, nil nil];  
  11.         [alert show];}  
  12. }  
  13.  

  14.  

  15.  

  16.  

  17.  

  18. - (BOOL) checkCardNo:(NSString*) cardNo{  

  19.     int oddsum = 0;     //奇数求和  
  20.     int evensum = 0;    //偶数求和  
  21.     int allsum = 0;  
  22.     int cardNoLength = (int)[cardNo length];  
  23.     int lastNum = [[cardNo substringFromIndex:cardNoLength-1] intValue];  
  24.       
  25.     cardNo = [cardNo substringToIndex:cardNoLength - 1];  
  26.     for (int i = cardNoLength -1 ; i>=1;i--) {  
  27.         NSString *tmpString = [cardNo substringWithRange:NSMakeRange(i-1, 1)];  
  28.         int tmpVal = [tmpString intValue];  
  29.         if (cardNoLength % 2 ==1 ) {  
  30.             if((i % 2) == 0){  
  31.                 tmpVal *= 2;  
  32.                 if(tmpVal>=10)  
  33.                     tmpVal -= 9;  
  34.                 evensum += tmpVal;  
  35.             }else{  
  36.                 oddsum += tmpVal;  
  37.             }  
  38.         }else{  
  39.             if((i % 2) == 1){  
  40.                 tmpVal *= 2;  
  41.                 if(tmpVal>=10)  
  42.                     tmpVal -= 9;  
  43.                 evensum += tmpVal;  
  44.             }else{  
  45.                 oddsum += tmpVal;  
  46.             }  
  47.         }  
  48.     }  
  49.       
  50.     allsum = oddsum + evensum;  
  51.     allsum += lastNum;  
  52.     if((allsum % 10) == 0)  
  53.         return YES;  
  54.     else  
  55.         return NO;  
  56. }  

以上是关于银行卡正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

C++正则表达式:隐藏银行卡号倒数第5-8位数字,卡号的长度不是定长(16或19位),所以只能倒数.

银行识别码正则表达式

常用的正则表达式 身份证信息和银行卡信息的判断

正则表达式校验

正则表达式匹配,匹配一段代码里的中文

正则表达式c语言匹配汉字“银行”,怎么写啊???直接写“银行”匹配不出来,麻烦高手指点下,很急的