正则表达式:一行字符串仅包含浮点数和制表符/空格

时间:2010-07-01 01:46:03

标签: regex

包含ONLY浮点数的字符串行的正则表达式是用空格或制表符分隔的。浮点数可以是负数,如-999.999

3 个答案:

答案 0 :(得分:4)

(?:-?(?:\d+(?:\.\d*)|.\d+)[ \t]*)+

是一种可能性。以更易读的格式:

(?:
  -?                 # Optional negative sign
  (?:
    \d+(?:\.\d*)     # Either an integer part with optional decimal part
    |
    .\d+             # Or a decimal part that starts with a period
  )
  [ \t]*             # Followed by any number of tabs or spaces
)+                   # One or more times

答案 1 :(得分:2)

让我们为浮动提出一个正则表达式,然后看看我们可以对其余部分做些什么。

浮动是:

  • 可选的否定号
  • 后跟多个数字
  • 后跟一个可选的小数点,然后是更多的数字
  • 跟随“e”
  • 后跟多个数字(带有可选符号)。

把它放在一起,我们得到:

/-?[0-9]+(\.[0-9]+)?([Ee][+-]?[0-9]+)?/

现在,这非常宽松,但是如果你想把它收紧一点,你可以调整它。现在,对于其中任意数量的中间空格,这非常简单:

/^(F\s+)+$/

总而言之,我们最终得到:

/^(-?[0-9]+(\.[0-9]+)?([Ee][+-]?[0-9]+)?\s+)+$/

答案 2 :(得分:1)

浮点数的正则表达式如下所示:-?\d+\.?\d+

空白分隔符如下所示:\s

将它们放在一起,让它重复,确保末端有一个浮子(不是分隔符):

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

转义和\d vs [0-9]可能会发生变化,具体取决于您的正则表达式的风格。