iOS金额正则,需要的拿走

网上看了很多金额输入的代码,大多数都有些问题,要么就是代码太多,对于普遍有强迫症的程序猿来说,看着很碍眼。。。

多的不说了,直接上代码跟大家分享

需求:

  1. 位数可控(限定9位)

  2. 小数点后两位

  3. 开头最多输入一个0

  4. 只能有一位小数点

     - (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;
    
     }
    

有不足之处请大家指正,谢谢!

你可能感兴趣的:(iOS金额正则,需要的拿走)