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!