2010-01-15 58 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

相关问题