网上看了很多金额输入的代码,大多数都有些问题,要么就是代码太多,对于普遍有强迫症的程序猿来说,看着很碍眼。。。
多的不说了,直接上代码跟大家分享
需求:
-
位数可控(限定9位)
-
小数点后两位
-
开头最多输入一个0
-
只能有一位小数点
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ NSString *toString = [textField.text stringByReplacingCharactersInRange:range withString:string]; if (toString.length > 0) { //NSString *stringRegex = @"(\\+|\\-)?(([0]|(0[.]\\d{0,2}))|([1-9]\\d{0,8}(([.]\\d{0,2})?)))?";//(带正负号的) NSString *stringRegex = @"(([0]|(0[.]\\d{0,2}))|([1-9]\\d{0,8}(([.]\\d{0,2})?)))?";//一般格式 d{0,8} 控制位数 NSPredicate *money = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", stringRegex]; BOOL flag = [money evaluateWithObject:toString]; if (!flag) return NO; } return YES; }
有不足之处请大家指正,谢谢!
网友评论