ホームページ  >  記事  >  ウェブフロントエンド  >  ユーザーが入力したキャッシュカード番号が正しいかどうかを判定する方法_正規表現

ユーザーが入力したキャッシュカード番号が正しいかどうかを判定する方法_正規表現

微波
微波オリジナル
2017-06-28 13:39:595269ブラウズ

以下のエディターは、ユーザーが入力した銀行カード番号が正しいかどうかを判断する方法を提供します (Luhn アルゴリズムに基づく形式検証)。編集者はこれがとても良いものだと思ったので、皆さんの参考として今から共有します。編集者をフォローして見てみましょう

開発中、より良いユーザーエクスペリエンスを作成し、サーバー側の負荷を軽減するために、携帯電話番号、銀行カード番号などの一部でフォーマット検証を実行する必要がある場合があります。 、ID 番号

以下は、銀行カード番号の入力が正しいかどうかを判断するコードです (Luhn アルゴリズムに基づく形式検証):

iOS コード:

/**

 * 银行卡格式校验

 *

 * @param cardNo 银行卡号

 *

 * @return 

 */

+ (BOOL) checkCardNo:(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;

}

Android コード:

/**

 

 * 匹配Luhn算法:可用于检测银行卡卡号

 

 * @param cardNo

 

 * @return

 

 */

 

public static boolean matchLuhn(String cardNo) {

 

  int[] cardNoArr = new int[cardNo.length()];

 

  for (int i=0; i<cardNo.length(); i++) {

 

    cardNoArr[i] = Integer.valueOf(String.valueOf(cardNo.charAt(i)));

 

  }

 

  for(int i=cardNoArr.length-2;i>=0;i-=2) {

 

    cardNoArr[i] <<= 1;

 

    cardNoArr[i] = cardNoArr[i]/10 + cardNoArr[i]%10;

 

  }

 

  int sum = 0;

 

  for(int i=0;i<cardNoArr.length;i++) {

 

    sum += cardNoArr[i];

 

  }

 

  return sum % 10 == 0;

 

}

添付 (銀行カード番号の形式):

銀行カード番号を入力するとき、通常、「1332-2131-2313-1231」のような形式で、4 桁ごとに「-」を挿入します。 -212"
は、次の方法で実現できます:

textFieldのプロキシを設定します

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

{

  NSString *text = [textField text];

  NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789\b"];

  string = [string stringByReplacingOccurrencesOfString:@"-" withString:@""];

  if ([string rangeOfCharacterFromSet:[characterSet invertedSet]].location != NSNotFound) {

    return NO;

  }

  

  text = [text stringByReplacingCharactersInRange:range withString:string];

  text = [text stringByReplacingOccurrencesOfString:@"-" withString:@""];

  

  NSString *newString = @"";

  while (text.length > 0) {

    NSString *subString = [text substringToIndex:MIN(text.length, 4)];

    newString = [newString stringByAppendingString:subString];

    if (subString.length == 4) {

      newString = [newString stringByAppendingString:@"-"];

    }

    text = [text substringFromIndex:MIN(text.length, 4)];

  }

  

  newString = [newString stringByTrimmingCharactersInSet:[characterSet invertedSet]];

  

  if (newString.length >= 24) {

    return NO;

  }

  

  [textField setText:newString];

  

  return NO;

}

最後に、記号「-」を含まない銀行カード番号を取得する方法は?

[self.textField.text stringByReplacingOccurrencesOfString:@"-" withString:@""]

以上がユーザーが入力したキャッシュカード番号が正しいかどうかを判定する方法_正規表現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。