ホームページ  >  記事  >  ウェブフロントエンド  >  ユーザーが入力した銀行カード番号を照合する Luhn アルゴリズム

ユーザーが入力した銀行カード番号を照合する Luhn アルゴリズム

php中世界最好的语言
php中世界最好的语言オリジナル
2018-03-29 15:55:262031ブラウズ

今回は、ユーザーが入力した銀行カード番号を照合する Luhn アルゴリズムについて説明します。 ユーザーが入力した銀行カード番号を照合するために Luhn アルゴリズムを使用する場合の 注意事項 について説明します。実際のケースを見てみましょう。一見。

開発中、より良いユーザーエクスペリエンスを作成し、サーバーへの負荷を軽減するために、携帯電話番号、銀行カード番号、ID番号などのいくつかの形式の検証を実行する必要がある場合があります

以下。コード (Luhn アルゴリズムに基づく形式検証):

Android コード:

/**
 * 银行卡格式校验
 *
 * @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;
}

添付 (銀行カード)番号の書式設定):

入力 銀行カード番号の処理では、通常、4 桁ごとに「-」を挿入します。「1332-2131-2313-1231-212」のような形式は、次のメソッド:

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

/**
 
 * 匹配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;
 
}

最後に、記号「-」を含まない銀行カード番号を取得する方法は? [self.textField.text stringByReplacingOccurrencesOfString:@"-" withString:@""]

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、他の関連情報に注目してください。 php 中国語 Web サイトに記事が掲載されました。 推奨書籍:

正規表現のあいまい一致機能を実装する方法

QQ番号が正しく入力されているかどうかを確認するための正規表現

以上がユーザーが入力した銀行カード番号を照合する Luhn アルゴリズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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