Heim  >  Artikel  >  Web-Frontend  >  Methode zur Bestimmung, ob die vom Benutzer eingegebene Bankkartennummer ein korrekter_regulärer Ausdruck ist

Methode zur Bestimmung, ob die vom Benutzer eingegebene Bankkartennummer ein korrekter_regulärer Ausdruck ist

微波
微波Original
2017-06-28 13:39:595270Durchsuche

Der folgende Editor bietet Ihnen eine Methode, um festzustellen, ob die vom Benutzer eingegebene Bankkartennummer korrekt ist (Formatüberprüfung basierend auf dem Luhn-Algorithmus). Der Herausgeber findet es ziemlich gut, deshalb teile ich es jetzt mit Ihnen und gebe es als Referenz. Folgen wir dem Editor und werfen wir einen Blick darauf

In der Entwicklung ist es manchmal erforderlich, einige zu formatieren, z. B. Mobiltelefonnummern oder Bankkarten, um eine bessere Benutzererfahrung zu schaffen und den Druck auf der Serverseite zu verringern Nummern und ID-Nummern. Überprüfung

Der folgende Code dient zur Feststellung, ob die Eingabe der Bankkartennummer korrekt ist (Formatüberprüfung basierend auf dem Luhn-Algorithmus):

iOS Code:

/**

 * 银行卡格式校验

 *

 * @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;

}

Androd-Code:

/**

 

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

 

}

Anhang (Bank Formatierung der Kartennummer):

Bei der Eingabe der Bankkartennummer fügen wir normalerweise alle 4 Ziffern ein „-“ ein, ein Format ähnlich „1332-2131-2313-1231-“ 212"
kann übergeben werden. Die folgende Methode ist implementiert:

Stellen Sie den Proxy von textField ein

- (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;

}

Abschließend erfahren Sie, wie Sie das nicht enthaltende Symbol „Wo ist Ihre Bankkartennummer?“ erhalten.

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

Das obige ist der detaillierte Inhalt vonMethode zur Bestimmung, ob die vom Benutzer eingegebene Bankkartennummer ein korrekter_regulärer Ausdruck ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn