UITextField限制两位小数的输入
OC版本
#pragma mark ************ UITextFieldDelegate ************
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (string.length == 0) return YES;
NSString *checkStr = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSString *regex = @"^\-?([1-9]\d*|0)(\.\d{0,2})?$";
return [self isValid:checkStr withRegex:regex];
}
- (BOOL) isValid:(NSString*)checkStr withRegex:(NSString*)regex
{
NSPredicate *predicte = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
return [predicte evaluateWithObject:checkStr];
}
Swift版本
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if string.isEmpty {
return true
}
let checkStr = (textField.text! as NSString).replacingCharacters(in: range, with: string)
let regex = "^\\-?([1-9]\\d*|0)(\\.\\d{0,2})?$"
return isValid(checkStr, withRegex: regex)
}
func isValid(_ checkStr: String, withRegex regex: String) -> Bool {
let predicate = NSPredicate(format: "SELF MATCHES %@", regex)
return predicate.evaluate(with: checkStr)
}