iOS關于判斷輸入的密碼是否合法,價格動態判斷合法性
一:正則表達式再用pragma 正則匹配手機號
- (BOOL)checkTelNumber:(NSString ) telNumber { NSString pattern = @^ 1 +[ 3578 ]+\d{ 9 }; NSPredicate *pred = [NSPredicate predicateWithFormat: @SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:telNumber]; return isMatch; }
pragma 正則匹配用戶密碼 6 - 18 位數字和字母組合
- (BOOL)checkPassword:(NSString ) password { NSString pattern = @^(?![ 0 - 9 ]+$)(?![a-zA-Z]+$)[a-zA-Z0- 9 ]{ 6 , 18 }; NSPredicate *pred = [NSPredicate predicateWithFormat: @SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:password]; return isMatch;
}
pragma 正則匹配用戶姓名, 20 位的中文或英文
- (BOOL)checkUserName : (NSString ) userName { NSString pattern = @^[a-zA-Z一-龥]{ 1 , 20 }; NSPredicate *pred = [NSPredicate predicateWithFormat: @SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:userName]; return isMatch;
}
pragma 正則匹配用戶身份證號 15 或 18 位
- (BOOL)checkUserIdCard: (NSString ) idCard { NSString pattern = @(^[ 0 - 9 ]{ 15 }$)|([ 0 - 9 ]{ 17 }([ 0 - 9 ]|X)$); NSPredicate *pred = [NSPredicate predicateWithFormat: @SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:idCard]; return isMatch; }
pragma 正則匹員工號, 12 位的數字
(BOOL)checkEmployeeNumber : (NSString ) number { NSString pattern = @^[ 0 - 9 ]{ 12 };
NSPredicate *pred = [NSPredicate predicateWithFormat: @SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:number]; return isMatch;
}
pragma 正則匹配URL
- (BOOL)checkURL : (NSString ) url { NSString pattern = @^[ 0 -9A-Za-z]{ 1 , 50 }; NSPredicate *pred = [NSPredicate predicateWithFormat: @SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:url]; return isMatch;
} 二 TextFiled的代理方法
//////// 特殊字符的限制輸入,價格金額的有效性判斷
define myDotNumbers @"0123456789.\n"
define myNumbers @"0123456789\n"
-(void) createTextFiled { textfield1 = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 20, 20)]; textfield1.delegate = self; [self addSubview:textfield1_];
textfield2_ = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
textfield2_.delegate = self;
[self addSubview:textfield2_];
textfield3_ = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
textfield3_.delegate = self;
[self addSubview:textfield3_];
}
-(void)showMyMessage:(NSString*)aInfo {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:aInfo delegate:self cancelButtonTitle:@"確定" otherButtonTitles:nil, nil];
[alertView show];
[alertView release];
}
(BOOL)textField:(UITextField )textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString )string { NSCharacterSet *cs; if ([textField isEqual:textfield1_]) {
cs = [[NSCharacterSet characterSetWithCharactersInString:myNumbers] invertedSet]; NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""]; BOOL basicTest = [string isEqualToString:filtered]; if (!basicTest) { [self showMyMessage:@"只能輸入數字"]; return NO; }
} else if ([textField isEqual:textfield2_]) {
cs = [[NSCharacterSet characterSetWithCharactersInString:myNumbers] invertedSet]; NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""]; BOOL basicTest = [string isEqualToString:filtered]; if (!basicTest) { [self showMyMessage:@"只能輸入數字"]; return NO; }
} else if ([textField isEqual:textfield3_]) {
NSUInteger nDotLoc = [textField.text rangeOfString:@"."].location; if (NSNotFound == nDotLoc && 0 != range.location) { cs = [[NSCharacterSet characterSetWithCharactersInString:myDotNumbers] invertedSet]; } else { cs = [[NSCharacterSet characterSetWithCharactersInString:myNumbers] invertedSet]; } NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""]; BOOL basicTest = [string isEqualToString:filtered]; if (!basicTest) { [self showMyMessage:@"只能輸入數字和小數點"]; return NO; } if (NSNotFound != nDotLoc && range.location > nDotLoc + 3) { [self showMyMessage:@"小數點后最多三位"]; return NO; }
} return YES; }
</pre>