对于常规的汉字和字母和数字的限制比较容易,使用正则进行过滤即可 ,唯一需要注意的就是,当使用iOS系统自带的九宫格键盘记性输入的时候,输入的其实是特殊字符:
@"➋➌➍➎➏➐➑➒"
下面贴上完整代码:
#pragma mark - UITextFieldDelegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if ([self isInputRuleAndNumber:string] || [string isEqualToString:@""]) {
return YES;
}
return NO;
}
//pattern中,输入需要验证的通过的字符
//小写a-z
//大写A-Z
//汉字\u4E00-\u9FA5
//数字\u0030-\u0039
//@param str 要过滤的字符
//@return YES 只允许输入字母和汉字
//*/
- (BOOL)isInputRuleAndNumber:(NSString *)str {
NSString *other = @"➋➌➍➎➏➐➑➒"; //九宫格的输入值
if ([other rangeOfString:str].location != NSNotFound) {
return YES;
}
NSString *pattern = @"[a-zA-Z\u4E00-\u9FA5\\u0030-\\u0039]+";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
BOOL isMatch = [pred evaluateWithObject:str];
return isMatch;
}