如何避免UITextfield中不需要的字符?

时间:2012-09-04 07:41:16

标签: ios validation

在我的文本字段中,它应该允许正十进制值和负十进制值。所以我用了正则表达式

#define FLOAT_REGEX @"-[0-9]+(\.[0-9][0-9]?)?"

-(BOOL) checkForDecimalValue:(NSString *) string
{
NSPredicate *confidenceTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",FLOAT_REGEX]; 
return [confidenceTest evaluateWithObject:string]?YES:NO;
}

但如果我只输入没有任何小数点的正值(例如ex 100,200等),则不接受。它应该允许正值和整数。

2 个答案:

答案 0 :(得分:3)

替换该行使用以下内容:

#define FLOAT_REGEX @"^[-]?[0-9]*(.[0-9]*)?$"

希望这有助于你想要的东西。从here

检查其有效性

答案 1 :(得分:0)

1-9范围内的数字,后跟零个或多个其他数字:

^[1-9]\d*$

允许带有可选小数点后跟数字的数字。 1-9范围内的数字,后跟零个或多个其他数字,然后可选地后跟一个小数点,后跟至少1位数字:

^[1-9]\d*(\.\d+)?$

注意:

开始和结束的^$锚定基本上说整个字符串必须与模式匹配

()?匹配括号

之间的全部内容的0或1

更新以处理逗号:

在正则表达式中.具有特殊含义 - 匹配任何单个字符。要在字符串中按字面意思匹配.,您需要使用.转义\.这是上面正则表达式中\.的含义。因此,如果您想使用逗号,则模式只是:

^[1-9]\d*(,\d+)?$

进一步更新以处理逗号和句号

如果您想在积分和小数部分之间允许.个数字组和,之间,请尝试:

^[1-9]\d{0,2}(\.\d{3})*(,\d+)?$

即。这是1-9范围内的数字,后跟最多2个其他数字,然后是0或更多组完整停止,然后是3位数字,然后可选地使用逗号和数字。

如果您想在数字之间允许.,请尝试:

^[1-9][\.\d]*(,\d+)?$

即。数字1-9后跟零个或多个数字或句号,可选地后跟一个逗号和一个或多个数字。

参考:Decimal or numeric values in regular expression validation

希望它有所帮助,快乐编码:)