1

当用户在文本框中输入值时,我正在尝试检查匹配项。

文本框的有效值如下所示:

"-"

"-5.5"

"-5.5 6.5 7.5"

无效将是

"-5.5   6.5    "

编辑:^-5.5 和 6.5 之间有不止一个空格,但由于某种原因没有显示。

"3.5 "

^(-?)(\d+\.?\d?)\s?(-?\d+\.?\d?)

请记住,除小数点外,负号是此处允许的唯一特殊字符。

谢谢。

4

3 回答 3

4

你可以使用这个:

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

解释:

^   
  -                   // Match '-'
  (?:                 // An optional non-capturing group
      \d+[.]\d+       // Match pattern - 14.45
      (?:             // A 0 or more times repeating Non-capture group
         [ ]          // A space
         \d+[.]\d+    // Pattern matching - 14.56
      )*              
  )?    
$    
于 2013-07-18T16:38:17.257 回答
2

我想这就是你要找的:

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

这将匹配单个连字符或任意数量的以空格分隔的正数或负数,并带有可选的小数点,并且后面最多有一个数字。这将允许像"5.5 6.5"or之类的值"-5.5 -6.5"(您的问题没有指定它是否应该匹配这些值)

你可以在这里测试它。


更新

这将允许更多匹配,但满足在用户键入时支持每个有效序列的新要求。当然,它允许更多,因为不可能确定无效输入和仅不完整的输入(例如-5 -)之间的差异。

^(-?(\d+\.?\d?( |$)|$))*$

你可以在这里测试它。

于 2013-07-18T16:39:24.107 回答
0

你可以试试这个:

^(-(\d+\.\d+)*([ ]\d+\.\d+)*)$
于 2013-07-18T16:40:59.210 回答