iOS正则限制UITextfield两位小数的输入

/ 0评 / 0

在工程项目中,我们一般都要考虑限制文本框的输入内容,这就涉及到对字符串的处理,而对字符串的处理问题,正则表达式就是我们的一利器。这就要求你对正则表达式有所了解,而对于刚接触正则表达式的同学来说,耐下心来,细细学习,对你从事程序开发来说是很有帮助的。下面我就从一个小例子来说明正则表达式的用法---即,限制UITextfield两位小数的输入

//参数一:range,要被替换的字符串的range,如果是新键入的那么就没有字符串被替换,range.lenth=0,第二个参数:替换的字符串,即键盘即将键入或者即将粘贴到textfield的string
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;{
    //第一个参数,被替换字符串的range,第二个参数,即将键入或者粘贴的string,返回的是改变过后的新str,即textfield的新的文本内容
    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];
}

评论已关闭。