2010-01-15 66 views
5

正則表達式的消極和積極的十進制值,以便可以 使用模式和匹配正確的執行字符串匹配負十進制值 任何一個可以提供我與正積極表達和Java的

+4

標點符號是非常好。 – 2010-01-15 14:55:33

回答

13
(\+|-)?([0-9]+(\.[0-9]+)) 

 

+0

用*代替第二個+以匹配諸如「.4」之類的東西(記入筆記中下面的錯誤答案)。 – 2012-05-23 16:36:44

+1

對於任何使用這種方法的人來說,只對純數字文本框進行驗證,如果你的正則表達式引擎支持它,你可以用開始和結束錨來包裝表達式,就像'^(\ + | - )?([0-9] +(\。[0-9] +))$'。 – kevin628 2012-09-07 17:08:35

+0

@ kevin628記住一些正則表達式引擎需要打開一個標誌來使用這些開始和結束錨點。例如,我知道Java正則表達式在開始時需要(?m)使用'^'和'$'符號。 – Rossiar 2013-09-23 09:03:06

3

試試這個:

[+-]?\d+\.\d+ 
+0

請注意,這將無法識別「.4」(無前導零)或「10」(無小數)等模式。但鑑於「問題」的模糊性,我不知道這是否有問題。 – BlairHippo 2010-01-15 14:45:17

+0

是的;由於OP表示「十進制」,我認爲小數點是強制性的,但我也不確定該可選整數 – 2010-01-15 16:36:52

+1

好吧,如果我們使用強制小數點,總是可以這樣做[[+ - ]?\ d * \。\ d +」。至少處理可選的前導0。 – BlairHippo 2010-01-15 17:18:02

7

試試這個!我也用這種方式

"^-?[0-9]{1,12}(?:\.[0-9]{1,4})?$" 

規則:

ex: ^-?[0-9]{1,12}(?:\.[0-9]{1,4})?$ 
^   # Start of string 
[0-9]{1,12} # Match 1-12 digits (i. e. 0-999999999999) 
(?:   # Try to match... 
\.   # a decimal point 
[0-9]{1,4} # followed by one to three digits (i. e. 0-9999) 
)?   # ...optionally 
$   # End of string 
1
+ (BOOL)isStringADecimalNumber:(NSString *)string 
{ 
    NSString *regex = @"([+]|-)?(([0-9]+[.]?[0-9]*)|([0-9]*[.]?[0-9]+))"; 

    NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; 

    BOOL stringIsADecimalNumber = [test evaluateWithObject:string]; 

    return stringIsADecimalNumber; 
} 

下面重點,是對這個表達式返回TRUE的數字: enter image description here enter image description here

相關問題