四行代碼搞定金額輸入限制
做支付的時(shí)候捞镰,不免要進(jìn)行金額闸与、價(jià)格的輸入,但在輸入的時(shí)候岸售,如果可以實(shí)現(xiàn)相應(yīng)的限制践樱,使其只能進(jìn)行合法價(jià)格、金額的輸入凸丸,這將大大提高用戶體驗(yàn)拷邢,網(wǎng)上的很多方法都是使用判斷語(yǔ)句進(jìn)行特判,學(xué)習(xí)了正則表達(dá)式之后屎慢,就嘗試用正則表達(dá)在代理里面進(jìn)行實(shí)現(xiàn)瞭稼。
一個(gè)支付金額、價(jià)格UITextField輸入框抛人,限定輸入價(jià)格類型的數(shù)字弛姜。只能輸入合法的金額數(shù)字,其它字符一律無(wú)法輸入妖枚,在UITextField的代理里面利用正則表達(dá)式實(shí)現(xiàn)輸入限制
在UITextField的代理里面實(shí)現(xiàn)以下方法:
核心代碼:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString * str = [NSString stringWithFormat:@"%@%@",textField.text,string];
//匹配以0開頭的數(shù)字
NSPredicate * predicate0 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",@"^[0][0-9]+$"];
//匹配兩位小數(shù)廷臼、整數(shù)
NSPredicate * predicate1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",@"^(([1-9]{1}[0-9]*|[0])\.?[0-9]{0,2})$"];
return ![predicate0 evaluateWithObject:str] && [predicate1 evaluateWithObject:str] ? YES : NO;
}
//限制只能輸入金額的正則表達(dá)式