在我的文本字段中,它应该允许正十进制值和负十进制值。所以我用了正则表达式
#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等),则不接受。它应该允许正值和整数。
答案 0 :(得分:3)
答案 1 :(得分:0)
1-9范围内的数字,后跟零个或多个其他数字:
^[1-9]\d*$
允许带有可选小数点后跟数字的数字。 1-9范围内的数字,后跟零个或多个其他数字,然后可选地后跟一个小数点,后跟至少1位数字:
^[1-9]\d*(\.\d+)?$
注意:
开始和结束的^
和$
锚定基本上说整个字符串必须与模式匹配
()?
匹配括号
更新以处理逗号:
在正则表达式中.
具有特殊含义 - 匹配任何单个字符。要在字符串中按字面意思匹配.
,您需要使用.
转义\.
这是上面正则表达式中\.
的含义。因此,如果您想使用逗号,则模式只是:
^[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
希望它有所帮助,快乐编码:)