2012-09-04 55 views
0

在我的文本框中,它應該允許正數和負數十進制值。所以我用正則表達式如何避免UITextfield中不需要的字符?

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

但如果我只輸入正值沒有任何小數點(前100,200等),這是不能接受的。它應該允許正值和整數。

回答

3

更換線使用以下命令:

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

希望這有助於在你想要的東西。請檢查其有效性here

+0

感謝您的回覆。我用這個正則表達式得到警告爲Unknown escapeSequence \ d。它也不允許正面價值。 –

+0

編輯並更改爲新的表達..請檢查這是否工作..對我而言 –

+0

非常感謝你...我的問題現在已修復.. –

0

在隨後的零個或多個其它數字的範圍是1-9的一個數位:

​​

爲了允許數字與一個可選的小數點後面的數字。在後面的零個或多個其他數字然後任選地隨後進行小數點的範圍1-9數字,後面接着至少1位:

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

注:

^$錨固到開始和最終基本上說,整個字符串必須格局

()?匹配0或支架之間的整個事情

更新處理逗號的1號:

在正則表達式中.具有特殊含義 - 匹配任何單個字符。要在字符串中直接匹配.,您需要使用\.轉義.這就是上述正則表達式中的\.的含義。所以,如果你想使用逗號,而不是模式很簡單:如果你要允許和數字組之間的.積分之間的,

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

進一步更新處理逗號和句號

和然後小數部分嘗試:

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

即這是在後面最多至2個其他數字然後零個或多個基團的句號的範圍是1-9的一個數字後跟3個數字然後任選地以逗號和數字 像之前一樣。

如果你想允許.數字之間的任何地方再試試:

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

即後跟零個或多個數字或句號後面可以跟一個逗號和一個或多個數字一個數字1-9 。

裁判:Decimal or numeric values in regular expression validation

希望它能幫助,快樂編碼:)

相關問題