長度限制:ide
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {lua
if (range.length == 1 && string.length == 0) {.net
return YES;orm
}else if (textField.text.length >= 11) {ci
textField.text = [textField.text substringToIndex:11];get
return NO;string
}it
return YES;table
}ast
-(void)textFieldDidChange:(UITextField *)sender{
if (sender.text.length >= 11) {
[sender resignFirstResponder];
}
}
郵編正則判斷:
+ (BOOL)isPostCode:(NSString *)str {
NSString *regex = @"^[1-9][0-9]{5}$";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
if ([pred evaluateWithObject:str]) {
return YES;
}else {
return NO;
}
}
手機號正則判斷:
+ (BOOL)isPhoneNumber:(NSString *)str {
str = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
if (str.length != 11)
{
return NO;
}else{
return [[NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"^(1[3-9])\\d{9}$"] evaluateWithObject:str];
}
}
身份證號碼正則判斷:
+ (BOOL) isValidateIdentityCard: (NSString *)identityCard
{
if (identityCard.length != 18) {
return NO;
}
BOOL flag;
if (identityCard.length <= 0) {
flag = NO;
return flag;
}
NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$";
NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
return [identityCardPredicate evaluateWithObject:identityCard];
}
身份證號末尾X自動補全:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSUInteger length = textField.text.length + string.length;
NSString *str = [NSString stringWithFormat:@"%@%@", textField.text, string];
// 當輸入到17位數的時候,經過theLastIsX方法判斷最後一位是否是X
if (length == 17 && [self theLastIsX:str] && ![loadingUserInfo stringIsEmpty:string]) {
// 若是是17位,並經過前17位計算出18位爲X,自動補全,並返回NO,禁止編輯。
textField.text = [NSString stringWithFormat:@"%@%@X", textField.text, string];
countOflogin = textField.text;
return NO;
}
// 若是是其餘狀況則直接返回小於等於18(最多輸入18位)
return length <= 18;
}
//MARK: 判斷最後一個是否是X
- (BOOL)theLastIsX:(NSString *)IDNumber {
NSMutableArray *IDArray = [NSMutableArray array];
for (int i = 0; i < 17; i++) {
NSRange range = NSMakeRange(i, 1);
NSString *subString = [IDNumber substringWithRange:range];
[IDArray addObject:subString];
}
NSArray *coefficientArray = [NSArray arrayWithObjects:@"7", @"9", @"10", @"5", @"8", @"4", @"2", @"1", @"6", @"3", @"7", @"9", @"10", @"5", @"8", @"4", @"2", nil];
int sum = 0;
for (int i = 0; i < 17; i++) {
int coefficient = [coefficientArray[i] intValue];
int ID = [IDArray[i] intValue];
sum += coefficient * ID;
}
if (sum % 11 == 2) return YES;
else return NO;
}